---
title: Kapitel 5. Das X-Window-System
part: Teil I. Erste Schritte
prev: books/handbook/ports
next: books/handbook/partii
showBookMenu: true
weight: 7
params:
  path: "/books/handbook/x11/"
---

[[x11]]
= Das X-Window-System
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 5
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/x11/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[x11-synopsis]]
== Übersicht

Bei einer Installation von FreeBSD mit bsdinstall wird nicht automatisch eine grafische Benutzeroberfläche installiert. Dieses Kapitel beschreibt die Installation und Konfiguration von Xorg, das eine grafische Umgebung über das quelloffene X-Window-System zur Verfügung stellt. Weiterhin wird beschrieben, wie Sie eine Desktop-Umgebung oder einen Window Manager finden und installieren können.

[NOTE]
====
Benutzer die eine Installationsmethode bevorzugen, welche automatisch Xorg konfiguriert, sollten sich https://www.furybsd.org[FuryBSD], https://ghostbsd.org[GhostBSD] oder https://www.midnightbsd.org[MidnightBSD] ansehen.
====

Weitere Informationen über Video-Hardware, die von Xorg unterstützt wird, finden Sie auf der http://www.x.org/[x.org] Webseite.

Nachdem Sie dieses Kapitel gelesen haben, werden Sie

* Die Komponenten des X-Window-Systems und ihr Zusammenspiel kennen.
* Wissen, wie Xorg installiert und konfiguriert wird.
* Wissen, wie verschiedene Window-Manager und Desktop-Umgebungen installiert und konfiguriert werden.
* Wissen, wie TrueType(R)-Schriftarten mit Xorg benutzt werden.
* Wissen, wie Sie die grafische Anmeldung (XDM) einrichten.

Bevor Sie dieses Kapitel lesen, sollten Sie

* Wissen, wie Sie Software Dritter, wie in crossref:ports[ports,Installieren von Anwendungen: Pakete und Ports] beschrieben, installieren.

[[x-understanding]]
== Terminologie

Obwohl es nicht nötig ist, alle Details der verschiedenen Komponenten des X Window Systems und deren Zusammenspiel zu kennen, kann es trotzdem nützlich sein die Grundlagen dieser Komponenten zu verstehen:

X-Server::
X wurde von Anfang an netzwerktransparent entworfen und verwendet ein "Client-Server-Modell". In diesem Modell läuft der "X-Server" auf dem Rechner, an dem die Tastatur, der Bildschirm und die Maus angeschlossen ist. Der Server ist für Dinge wie die Verwaltung des Bildschirms und die Verarbeitung von Tastatur- und Maus-Eingaben sowie anderer Ein- und Ausgabegeräte, wie beispielsweise ein Tablet oder ein Videoprojektor, verantwortlich. Dieses Modell verwirrt viele Leute, die erwarten, dass der "X-Server" der leistungsstarke Rechner im Maschinenraum und der "X-Client" ihr Arbeitsplatzrechner ist.

X-Client::
Jede X-Anwendung, wie beispielsweise XTerm oder Firefox ist ein "X-Client". Der Client sendet dem Server Nachrichten wie "Zeichne an diesen Koordinaten ein Fenster" und der Server sendet dem Client Nachrichten der Art "Der Benutzer hat gerade den Ok-Knopf gedrückt".
+
In kleinen Umgebungen laufen der X-Server und die X-Clients auf demselben Rechner. Es ist auch möglich, den X-Server auf einem weniger leistungsfähigen Rechner laufen zu lassen und die X-Anwendungen auf einem leistungsfähigeren Rechner zu betreiben. In diesem Fall kommunizieren der X-Server und die X-Clients über das Netzwerk.

Window-Manager::
X schreibt nicht vor, wie Fenster auf dem Bildschirm auszusehen haben, wie sie mit der Maus zu verschieben sind, welche Tastenkombinationen benutzt werden sollen um zwischen den Fenstern zu wechseln, wie die Fensterrahmen aussehen, oder ob diese Schaltflächen zum schließen haben. Stattdessen gibt X die Verantwortung für all diese Sachen an eine separate _Window-Manager_ Anwendung ab. Es stehen http://www.xwinman.org/[zahlreiche Window-Manager] zur Verfügung. Jeder Window-Manager bietet ein anderes Erscheinungsbild: einige unterstützen virtuelle Bildschirme, andere erlauben Tastenkombinationen zur Verwaltung des Bildschirms. Einige besitzen eine "Start" Schaltfläche und in manchen lässt sich das Aussehen und Verhalten der Anwendung über Themes beliebig einstellen. Window-Manager stehen in der Kategorie [.filename]#x11-wm# der Ports-Sammlung zur Verfügung.
+
Jeder Window-Manager wird unterschiedlich konfiguriert. Einige erwarten eine manuell erstellte Konfigurationsdatei, während andere ein grafisches Werkzeug für die meisten Konfigurationsarbeiten anbieten.

Desktop-Umgebungen::
KDE und GNOME werden als Desktop-Umgebungen bezeichnet, da sie eine ganze Reihe von Anwendungen für typische Desktop-Aufgaben enthalten. Dazu zählen beispielsweise Office-Pakete, Webbrowser und Spiele.

Fokus::
Der Window-Manager ist für die Methode verantwortlich, mit der ein Fenster den Fokus bekommt. Jedes System, das Fenster verwendet muss entscheiden, wie ein Fenster aktiviert wird, damit es Eingaben empfangen kann. Das aktive Fenster sollte zudem sichtbar gekennzeichnet werden.
+
Eine Methode wird "click-to-focus" genannt. Ein Fenster wird aktiv, wenn es mit der Maus angeklickt wird. Eine weitere Methode ist "focus-follows-mouse". Hier hat liegt der Fokus auf dem Fenster, auf dem sich der Mauszeiger befindet. Wird der Mauszeiger in ein anderes Fenster bewegt, so erhält dieses Fenster den Fokus. Eine dritte Methode ist "sloppy-focus". Hier wechselt der Fokus nur dann, wenn sich der Mauszeiger in ein neues Fenster bewegt und nicht, wenn er das aktive Fenster verlässt. Ist der Mauszeiger auf der Desktop Oberfläche, so bleibt der Fokus auf dem zuletzt verwendeten Fenster. Bei der Methode "click-to-focus" wird das aktive Fenster durch einen Mausklick festgelegt. Dabei kann das Fenster vor alle anderen Fenster gesetzt werden. Alle Eingaben werden dann, unabhängig von der Position des Mauszeigers, dem aktiven Fenster zugeordnet.
+
Die verschiedenen Window-Manager unterstützen noch andere Methoden. Alle unterstützen jedoch "click-to-focus" und die meisten von ihnen auch die anderen Methoden. Lesen Sie die Dokumentation des Window-Managers um festzustellen, welche Methoden zur Verfügung stehen.

Widgets::
_Widget_ bezeichnet Objekte, die in irgendeiner Weise geklickt oder manipuliert werden können. Dazu gehören buttons (Schaltflächen), check buttons (Schaltfläche für Mehrfachauswahlen), radio buttions (Schaltfläche für Einfachauswahlen), Icons und Auswahllisten. Eine Widget-Sammlung ist eine Reihe von Widgets, die verwendet werden um grafische Anwendungen zu erstellen. Es gibt mehrere populäre Widget-Sammlungen, einschließlich Qt, das von KDE benutzt wird, und GTK+, das von GNOME benutzt wird. Als Folge dessen, haben Anwendungen einen bestimmten look and feel, je nachdem welche Widget-Sammlung benutzt wurde, um die Anwendung zu erstellen.

[[x-install]]
== Xorg installieren

In FreeBSD kann Xorg als Paket oder Port installiert werden.

Die Installation des Pakets ist zwar schneller, dafür können weniger Optionen angepasst werden:

[source,shell]
....
# pkg install xorg
....

Die nachstehenden Kommandos bauen und installieren Xorg aus der Ports-Sammlung:

[source,shell]
....
# cd /usr/ports/x11/xorg
# make install clean
....

Bei beiden Vorgehensweisen wird ein vollständiges Xorg-System installiert. Für die meisten Anwender ist die Installation des Binärpakets die bessere Option.

Eine kleinere Version des Xorg-Systems für erfahrene Anwender ist mit package:x11/xorg-minimal[] verfügbar. Die meisten Dokumente, Bibliotheken und Anwendungen werden hierbei nicht installiert. Einige Anwendungen erfordern jedoch diese zusätzlichen Komponenten, um ordnungsgemäß zu funktionieren.

[[x-config]]
== Xorg konfigurieren

[[x-config-quick-start]]
=== Schnellstartanleitung

Xorg unterstützt die meisten gängigen Grafikkarten, Tastaturen und Zeigegeräte.

[TIP]
====

Grafikkarten, Monitore und Eingabegeräte werden automatisch erkannt und müssen nicht manuell konfiguriert werden. Erstellen Sie keine [.filename]#xorg.conf# und führen Sie nicht `-configure` aus, es sei denn, die automatische Konfiguration schlägt fehl.
====

[.procedure]
. Wenn Xorg bereits zuvor auf diesem Computer verwendet wurde, verschieben oder entfernen Sie alle vorhandenen Konfigurationsdateien:
+
[source,shell]
....
# mv /etc/X11/xorg.conf ~/xorg.conf.etc
# mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
....

. Fügen Sie die Benutzer, die Xorg verwenden, zur Gruppe `video` oder `wheel` hinzu, um die 3D-Beschleunigung zu aktivieren. Um den Benutzer _jru_ in eine der verfügbaren Gruppen hinzuzufügen:
+
[source,shell]
....
# pw groupmod video -m jru || pw groupmod wheel -m jru
....

. Der Window-Manager `twm` ist standardmäßig enthalten und wird auch gestartet, wenn Xorg startet:
+
[source,shell]
....
% startx
....

. Auf einigen älteren Versionen von FreeBSD muss die Systemkonsole auf man:vt[4] eingestellt sein, damit der Wechsel auf die Konsole ordnungsgemäß funktioniert. Informationen dazu finden Sie im <<x-config-kms>>.

[[x-config-user-group]]
=== Benutzergruppen für Grafikbeschleunigung

Um die 3D-Beschleunigung für Grafikkarten zu ermöglichen, ist der Zugriff auf [.filename]#/dev/dri# notwendig. In der Regel ist es am einfachsten, die Benutzer zur Gruppe `video` oder `wheel` hinzuzufügen. In diesem Beispiel wird man:pw[8] verwendet, um den Benutzer _slurms_ zu der Gruppe `video` hinzuzufügen, bzw. zur Gruppe `wheel`, falls die Gruppe `video` nicht existiert:

[source,shell]
....
# pw groupmod video -m slurms || pw groupmod wheel -m slurms
....

[[x-config-kms]]
=== Kernel Mode Setting (KMS)

Wenn der Computer die Anzeige von der Konsole auf eine höhere Bildschirmauflösung für X umstellt, muss der Videoausgabe-Modus eingestellt werden. Neuere Versionen von Xorg verwenden dazu ein System innerhalb des Kernels, um diesen Modus effizienter zu ändern. Ältere Versionen von FreeBSD verwenden dafür man:sc[4], welches jedoch nicht mit dem KMS-System umgehen kann. Das führt dazu, dass nach dem Schließen von X die Konsole leer bleibt, obwohl sie weiterhin funktioniert. Die neuere man:vt[4] Konsole vermeidet dieses Problem.

Fügen Sie diese Zeile in [.filename]#/boot/loader.conf# ein um man:vt[4] zu aktivieren:

[.programlisting]
....
kern.vty=vt
....

[[x-config-files]]
=== Konfigurationsdateien

Eine manuelle Konfiguration ist in der Regel nicht erforderlich. Bitte erstellen Sie keine manuellen Konfigurationsdateien, es sei denn, die automatische Konfiguration funktioniert nicht.

[[x-config-files-directory]]
==== Verzeichnis

Xorg sucht in verschiedenen Verzeichnissen nach Konfigurationsdateien. Unter FreeBSD ist [.filename]#/usr/local/etc/X11/# das bevorzugte Verzeichnis für diese Dateien. Die Verwendung dieses Verzeichnisses hilft dabei, Anwendungsdateien vom Betriebssystem getrennt zu halten.

Das Speichern von Konfigurationsdateien unter [.filename]#/etc/X11/# funktioniert immer noch, allerdings vermischt diese Methode Anwendungsdateien mit Dateien des Basissystems und wird daher nicht empfohlen.

[[x-config-files-single-or-multiple]]
==== Einzelne oder mehrere Dateien

Anstatt die traditionelle [.filename]#xorg.conf# zu verwenden, ist es einfacher, mehrere Dateien, die jeweils eine bestimmte Einstellung konfigurieren, zu verwenden. Diese Dateien werden im Unterverzeichnis [.filename]#xorg.conf.d/# des Hauptverzeichnisses gespeichert. Der vollständige Pfad ist normalerweise [.filename]#/usr/local/etc/X11/xorg.conf.d/#.

Beispiele für diese Dateien werden später in diesem Abschnitt vorgestellt.

Die traditionelle, einzelne [.filename]#xorg.conf# funktioniert weiterhin, ist jedoch nicht so übersichtlich und flexibel wie die Verwendung von mehreren Dateien im Unterverzeichnis [.filename]#xorg.conf.d/#.

[[x-config-video-cards]]
=== Grafikkarten

Aufgrund von Änderungen in neueren Versionen von FreeBSD ist es nun möglich, Grafiktreiber zu benutzen, die aus der Ports-Sammlung oder als Pakete bereitgestellt werden. Die folgenden Treiber sind mit package:graphics/drm-kmod[] verfügbar:

[[x-config-video-cards-ports]]
Intel KMS driver::
2D- und 3D-Beschleunigung wird auf den meisten Intel KMS driver Grafikkarten von Intel(R) unterstützt.
+
Name des Treibers: `i915kms`
+
2D- und 3D-Beschleunigung wird auf den meisten älteren Radeon KMS driver Grafikkarten von AMD(R) unterstützt.
+
Name des Treibers: `radeonkms`
+
2D- und 3D-Beschleunigung wird auf den meisten neueren AMD KMS driver Grafikkarten von AMD(R) unterstützt.
+
Name des Treibers: `amdgpu`
+
Eine Liste der unterstützten GPUs finden Sie unter https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units[] und https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units[].

[[x-config-video-cards-intel]]
Intel(R)::
3D-Beschleunigung wird von den meisten Intel(R)-Grafikkarten unterstützt, einschließlich Ivy Bridge (HD Graphics 2500, 4000 und P4000), Iron Lake (HD Graphics) und Sandy Bridge (HD Graphics 2000).
+
Treibername: `intel`
+
Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units[].

[[x-config-video-cards-radeon]]
AMD(R) Radeon::
2D- und 3D-Beschleunigung wird von den meisten Radeon-Karten bis zur HD6000-Serie unterstützt.
+
Treibername: `radeon`
+
Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units[].

[[x-config-video-cards-nvidia]]
NVIDIA::
Verschiedene NVIDIA Treiber sind in der Kategorie [.filename]#x11# der Ports-Sammlung enthalten. Installieren Sie den Treiber, der für die Grafikkarte benötigt wird.
+
Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/List_of_Nvidia_graphics/processing_units[].

[[x-config-video-cards-hybrid]]
Hybride Kombinationen::
Einige Notebooks besitzen zusätzlich zum Chipsatz oder Prozessor einen Grafikprozessor. _Optimus_ kombiniert Intel(R) und NVIDIA Hardware. _Umschaltbare Grafik_ bzw. _Hybride Grafik_ ist eine Kombination aus Intel(R), oder AMD(R) Prozessor mit AMD(R) Radeon GPU.
+
Die Implementierungen dieser Hybrid-Grafik-Systeme variieren und Xorg in FreeBSD ist nicht in der Lage, alle Versionen der Hardware zu betreiben.
+
Einige Computer bieten jedoch eine BIOS-Option, um eine der beiden Grafikkarten zu deaktivieren oder den _diskreten_ Modus einzuschalten. Zum Beispiel ist es manchmal möglich, die NVIDIA GPU in einem Optimus-System zu deaktivieren. Intel(R) Video kann dann mit einem Intel(R) Treiber verwendet werden.
+
Die BIOS-Einstellungen sind abhängig vom Modell des Computers. In manchen Situationen können beide GPUs aktiviert bleiben. Um solch ein System lauffähig zu machen genügt es bereits, nur die Haupt-GPU im Abschnitt `Device` der Konfigurationsdatei zu setzen.

[[x-config-video-cards-other]]
Andere Grafikkarten::
Treiber für weniger gebräuchliche Grafikkarten finden Sie in der Kategorie [.filename]#x11-drivers# der Ports-Sammlung.
+
Karten, die nicht durch einen speziellen Treiber unterstützt werden, sind vielleicht noch mit dem Treiber package:x11-drivers/xf86-video-vesa[] nutzbar. Dieser Treiber wird von package:x11/xorg[] installiert. Der Treiber kann auch manuell als package:x11-drivers/xf86-video-vesa[] installiert werden. Xorg versucht immer diesen Treiber zu verwenden, wenn für die Grafikkarte kein passender Treiber gefunden wird.
+
package:x11-drivers/xf86-video-scfb[] ist ein ähnlicher Treiber, der mit vielen UEFI und ARM(R) Computern funktioniert.

[[x-config-video-cards-file]]
Video-Treiber über eine Datei einstellen::
Den Intel(R) Treiber in einer Konfigurationsdatei einstellen:
+
[[x-config-video-cards-file-intel]]
.Den Intel(R) Treiber über eine Datei auswählen
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-intel.conf#

[.programlisting]
....
Section "Device"
	Identifier  "Card0"
	Driver	    "intel"
	# BusID	    "PCI:1:0:0"
EndSection
....

Wenn mehr als eine Grafikkarte vorhanden ist, kann der Eintrag `BusID` verwendet werden, um die gewünschte Karte auszuwählen. Eine Liste der `BusID`s der Grafikkarten kann mit `pciconf -lv | grep -B3 display` ausgegeben werden.
====
+
Den Radeon Treiber in einer Konfigurationsdatei einstellen:
+
[[x-config-video-cards-file-radeon]]
.Den Radeon Treiber über eine Datei auswählen
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-radeon.conf#

[.programlisting]
....
Section "Device"
	Identifier  "Card0"
	Driver	    "radeon"
EndSection
....

====
+
Den VESA Treiber in einer Konfigurationsdatei einstellen:
+
[[x-config-video-cards-file-vesa]]
.Den VESA Treiber über eine Datei auswählen
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-vesa.conf#

[.programlisting]
....
Section "Device"
	Identifier  "Card0"
	Driver	    "vesa"
EndSection
....

====
+
Den Treiber `scfb` für UEFI- oder ARM(R)-Computer auswählen:
+
[[x-config-video-cards-file-scfb]]
.Den `scfb` Treiber über eine Datei auswählen
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-scfb.conf#

[.programlisting]
....
Section "Device"
	Identifier  "Card0"
	Driver	    "scfb"
EndSection
....

====

[[x-config-monitors]]
=== Monitore

Fast alle Monitore unterstützen den Extended Display Identification Data Standard (EDID). Xorg verwendet EDID um mit dem Monitor zu kommunizieren und die unterstützten Auflösungen und Bildwiederholfrequenzen zu erkennen. Xorg wählt dann die für den Monitor am besten geeignete Kombination von Einstellungen.

Weitere vom Monitor unterstützte Auflösungen, können in der Konfigurationsdatei, oder nach dem Start des X-Servers mit man:xrandr[1] gesetzt werden.

[[x-config-monitors-xrandr]]
man:xrandr[1] benutzen::
Führen Sie man:xrandr[1] ohne Parameter aus, um eine Liste von Video-Ausgängen und erkannten Monitor-Modi zu sehen:
+
[source,shell]
....
% xrandr
Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192
DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm
   1920x1200     59.95*+
   1600x1200     60.00
   1280x1024     85.02    75.02    60.02
   1280x960      60.00
   1152x864      75.00
   1024x768      85.00    75.08    70.07    60.00
   832x624       74.55
   800x600       75.00    60.32
   640x480       75.00    60.00
   720x400       70.08
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
....
+
Die Auflistung zeigt, dass der `DVI-0` Ausgang benutzt wird, um eine Bildschirmauflösung von 1920x1200 bei einer Bildwiederholrate von 60 Hz anzuzeigen. An den Anschlüssen `DisplayPort-0` und `HDMI-0` sind keine Monitore angeschlossen.
+
Die anderen Anzeigemodi können mit man:xrandr[1] ausgewählt werden. Um beispielsweise auf 1280x1024 bei 60 Hz umzuschalten:
+
[source,shell]
....
% xrandr --mode 1280x1024 --rate 60
....
+
Häufig wird für einen Videoprojektor der externe Videoausgang eines Notebooks verwendet.
+
Die Typen und Anzahl der Videoanschlüsse variiert zwischen den Geräten und auch die Ausgabe variiert von Treiber zu Treiber. Was für den einen Treiber `HDMI-1` ist, nennt ein anderer Treiber vielleicht `HDMI1`. Führen Sie daher zunächst man:xrandr[1] aus, um alle verfügbaren Anschlüsse aufzulisten.
+
[source,shell]
....
% xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768      60.04*+
   1024x768      60.00
   800x600       60.32    56.25
   640x480       59.94
VGA1 connected (normal left inverted right x axis y axis)
   1280x1024     60.02 +  75.02
   1280x960      60.00
   1152x864      75.00
   1024x768      75.08    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   640x480       75.00    72.81    66.67    60.00
   720x400       70.08
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
....
+
Vier Ausgänge wurden gefunden: das integrierte Panel `LVDS1`, sowie die externen Anschlüsse `VGA1`, `HDMI1` und `DP1`.
+
Der Videoprojektor wurde am Ausgang `VGA1` angeschlossen. man:xrandr[1] wird nun verwendet, um diese Ausgabe auf die native Auflösung des Projektors einzustellen und den zusätzlichen Platz auf der rechten Seite des Desktops hinzuzufügen:
+
[source,shell]
....
% xrandr --output VGA1 --auto --right-of LVDS1
....
+
`--auto` wählt die Auflösung und Aktualisierungsrate die von EDID ermittelt wurden. Wenn die Auflösung nicht richtig ermittelt wurde, kann ein fester Wert mit `--mode` anstelle von `--auto` angegeben werden. Beispielsweise können die meisten Projektoren mit einer Auflösung von 1024x768 betrieben werden, die mit `--mode 1024x768` gesetzt wird.
+
man:xrandr[1] wird häufig aus [.filename]#.xinitrc# ausgeführt, um den entsprechenden Modus zu setzen wenn X startet.

[[x-config-monitors-files]]
Bildschirmauflösung über eine Datei einstellen::
Eine Bildschirmauflösung von 1024x768 in einer Konfigurationsdatei einstellen:
+
.Die Bildschirmauflösung in eine Datei schreiben
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf#

[.programlisting]
....
Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	SubSection "Display"
	Modes      "1024x768"
	EndSubSection
EndSection
....

====
+
Die wenigen Monitore, die EDID nicht beherrschen, können durch setzen von `HorizSync` und `VertRefresh` auf den Bereich der vom Monitor unterstützten Frequenzen konfiguriert werden.
+
.Manuelles Einstellen der Monitorfrequenzen
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf#

[.programlisting]
....
Section "Monitor"
	Identifier   "Monitor0"
	HorizSync    30-83  # kHz
	VertRefresh  50-76  # Hz
EndSection
....

====

[[x-config-input]]
=== Eingabegeräte

[[x-config-input-keyboard]]
==== Tastaturen

[[x-config-input-keyboard-layout]]
Tastaturlayout::
Die standardisierte Position von Tasten auf einer Tastatur wird als _Layout_ bezeichnet. Layouts und andere einstellbare Parameter werden in man:xkeyboard-config[7] beschrieben.
+
In der Voreinstellung ist ein US-amerikanisches Layout aktiv. Um ein alternatives Layout zu wählen, setzen Sie die Optionen `XkbLayout` und `XkbVariant` in der Klasse `InputClass`. Dies wird für alle Eingabegeräte der entsprechenden Klasse angewendet werden.
+
Dieses Beispiel konfiguriert ein deutsches Tastaturlayout.
+
.Konfiguration eines Tastaturlayouts
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/keyboard-de.conf#

[.programlisting]
....
Section "InputClass"
	Identifier	"KeyboardDefaults"
	MatchIsKeyboard	"on"
	Option		"XkbLayout" "de"
EndSection
....

====
+
.Konfiguration mehrerer Tastaturlayouts
[example]
====

Hier werden die Tastaturlayouts für Vereinigte Staaten, Spanien und Ukraine gesetzt. Mit kbd:[Alt+Shift] können Sie zwischen den einzelnen Layouts wechseln. Für eine verbesserte Steuerung des Layouts kann package:x11/xxkb[] oder package:x11/sbxkb[] benutzt werden.

[.filename]#/usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf#

[.programlisting]
....
Section "InputClass"
	Identifier	"All Keyboards"
	MatchIsKeyboard	"yes"
	Option		"XkbLayout" "us,es,ua"
EndSection
....

====

[[x-config-input-keyboard-zap]]
Xorg über die Tastatur beenden::
X kann über eine Tastenkombination geschlossen werden. Standardmäßig ist die Tastenkombination jedoch nicht gesetzt, da sie mit Tastaturbefehlen für einige Anwendungen in Konflikt steht. Die Aktivierung dieser Option erfordert Änderungen in der Sektion `InputDevice` für die Tastatur:
+
.X über die Tastatur beenden
[example]
====

[.filename]#/usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf#

[.programlisting]
....
Section "InputClass"
	Identifier	"KeyboardDefaults"
	MatchIsKeyboard	"on"
	Option		"XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
....

====

[[x11-input-mice]]
==== Mäuse und Zeigegeräte

[IMPORTANT]
====
Wenn Sie unter FreeBSD {rel121-current} das Paket package:xorg-server[] 1.20.8 oder eine neuere Version installiert haben, und Sie auch nicht den man:moused[8]-Daemon verwenden, fügen Sie `kern.evdev.rcpt_mask=12` in [.filename]#/etc/sysctl.conf# ein.
====

Viele Parameter für die Maus können über Konfigurationseinstellungen eingestellt werden. man:mousedrv[4] enthält eine vollständige Liste.
[[x11-input-mice-buttons]]
Mauszeiger::
Die Anzahl der Maustasten wird in [.filename]#xorg.conf# im Abschnitt `InputDevice` für die Maus festgelegt. Um die Anzahl der Tasten auf 7 zu setzen:
+
.Die Anzahl der Maustasten festlegen
[example]
====

[.filename]#/usr/local/X11/xorg.conf.d/mouse0-buttons.conf#

[.programlisting]
....
Section "InputDevice"
	Identifier  "Mouse0"
	Option	    "Buttons" "7"
EndSection
....

====

[[x-config-manual-configuration]]
=== Manuelle Konfiguration

In einigen Fällen funktioniert die Autokonfiguration nicht mit bestimmter Hardware, oder es wird eine andere Konfiguration benötigt. Für diese Fälle kann eine benutzerdefinierte Konfigurationsdatei erstellt werden.

[WARNING]
====

Erstellen Sie keine manuellen Konfigurationsdateien, sofern dies nicht erforderlich ist. Eine unnötige manuelle Konfiguration kann den ordnungsgemäßen Betrieb verhindern.
====

Eine Konfigurationsdatei kann, basierend auf der von Xorg erfassten Hardware erzeugt werden. Diese Konfigurationsdatei ist ein guter Ausgangspunkt für angepasste Konfigurationen.

Erzeugung einer [.filename]#xorg.conf#:

[source,shell]
....
# Xorg -configure
....

Die Konfigurationsdatei wird in [.filename]#/root/xorg.conf.new# gespeichert. Machen Sie alle gewünschten Änderungen an dieser Datei. Danach testen Sie die Datei mit:

[source,shell]
....
# Xorg -retro -config /root/xorg.conf.new
....

Nachdem die neue Konfiguration angepasst und getestet wurde, kann die Konfiguration in kleinere Dateien unter [.filename]#/usr/local/etc/X11/xorg.conf.d/# aufgeteilt werden.

[[x-fonts]]
== Schriftarten in Xorg benutzen

[[type1]]
=== Type 1 Schriftarten

Die Schriftarten, die mit Xorg ausgeliefert werden, eignen sich ganz und gar nicht für Desktop-Publishing-Anwendungen. Große Schriftarten zeigen bei Präsentationen deutliche Treppenstufen und kleine Schriftarten sind fast unleserlich. Es gibt allerdings mehrere hochwertige Type 1 Schriftarten (PostScript(R)), die mit Xorg benutzt werden können. Beispielsweise enthalten die URW-Schriftarten (package:x11-fonts/urwfonts[]) hochwertige Versionen gängiger Type 1 Schriftarten (unter anderem Times Roman(TM), Helvetica(TM), Palatino(TM)). Die Sammlung Freefonts (package:x11-fonts/freefonts[]) enthält viele weitere Schriftarten, doch sind diese für den Einsatz in Grafikprogrammen wie Gimp gedacht und nicht für den alltäglichen Gebrauch. Weiterhin kann Xorg mit einem Minimum an Aufwand konfiguriert werden, damit TrueType(R)-Schriftarten benutzt werden können. Mehr dazu erfahren Sie in der Manualpage man:X[7] und im <<truetype>>.

Die Type 1 Schriftarten lassen sich als Paket wie folgt installieren:

[source,shell]
....
# pkg install urwfonts
....

Alternativ können die Schriftarten aus der Ports-Sammlung gebaut und installiert werden:

[source,shell]
....
# cd /usr/ports/x11-fonts/urwfonts
# make install clean
....

Analog lassen sich Freefont und andere Sammlungen installieren. Damit der X-Server diese Schriftarten erkennt, fügen Sie eine entsprechende Zeile in die Konfigurationsdatei des X-Servers ([.filename]#/etc/X11/xorg.conf#) hinzu:

[.programlisting]
....
FontPath "/usr/local/shared/fonts/urwfonts/"
....

Alternativ kann in der X-Sitzung das folgende Kommando abgesetzt werden:

[source,shell]
....
% xset fp+ /usr/local/shared/fonts/urwfonts
% xset fp rehash
....

Jetzt kennt der X-Server die neuen Schriftarten, jedoch nur bis zu Ende der Sitzung. Soll die Änderung dauerhaft sein, müssen die Befehle in [.filename]#~/.xinitrc# eingetragen werden, wenn X mittels `startx` gestartet wird, beziehungsweise in [.filename]#~/.xsession#, wenn ein grafischer Login-Manager, wie XDM verwendet wird. Eine dritte Möglichkeit besteht darin, [.filename]#/usr/local/etc/fonts/local.conf# zu verwenden, was im <<antialias>> demonstriert wird.

[[truetype]]
=== TrueType(R)-Schriftarten

Xorg besitzt eine eingebaute Unterstützung zur Darstellung von TrueType(R)-Schriftarten. Hierzu existieren zwei verschiedene Module, die diese Funktionalität aktivieren können. In diesem Beispiel wird das Freetype-Modul benutzt, da es besser mit anderen Werkzeugen, die TrueType(R)-Schriftarten darstellen, übereinstimmt. Um das Freetype-Modul zu aktivieren, muss die folgende Zeile zum Abschnitt `"Module"` in [.filename]#/etc/X11/xorg.conf# hinzugefügt werden.

[.programlisting]
....
Load "freetype"
....

Erstellen Sie ein Verzeichnis für die TrueType(R)-Schriftarten (beispielsweise [.filename]#/usr/local/shared/fonts/TrueType#) und kopieren Sie alle Schriftarten dorthin. Beachten Sie, dass die Schriftarten für Xorg im UNIX(R)/MS-DOS(R)/Windows(R)-Format vorliegen müssen und nicht direkt von einem Apple(R) Mac(R) übernommen werden können. Sobald die Dateien in das Verzeichnis kopiert wurden, verwenden Sie mkfontscale um [.filename]#fonts.dir# zu erstellen, damit X weiß, dass diese neuen Dateien installiert wurden. `mkfontscale` kann als Paket installiert werden:

[source,shell]
....
# pkg install mkfontscale
....

Erstellen Sie dann einen Index der Schriftarten für X:

[source,shell]
....
# cd /usr/local/shared/fonts/TrueType
# mkfontscale
....

Geben Sie dem System das TrueType(R)-Verzeichnis, wie im <<type1>> beschrieben, bekannt:

[source,shell]
....
# xset fp+ /usr/local/shared/fonts/TrueType
# xset fp rehash
....

Oder fügen Sie eine `FontPath`-Zeile in [.filename]#xorg.conf# ein.

Jetzt sollten Gimp, Apache OpenOffice und alle anderen X-Anwendungen die TrueType(R)-Schritarten erkennen. Extrem kleine Schriftarten (Webseiten, die mit hoher Auflösung betrachtet werden) und sehr große Schriftarten (in StarOffice(TM)) werden jetzt viel besser aussehen.

[[antialias]]
=== Anti-aliasing

Alle Schriftarten in Xorg, die in den Verzeichnissen [.filename]#/usr/local/shared/fonts/# und [.filename]#~/.fonts/# gefunden werden, werden automatisch für Anti-aliasing an Anwendungen zur Verfügung gestellt, die Xft beherrschen. Die meisten aktuellen Anwendungen beherrschen Xft, dazu gehören auch KDE, GNOME und Firefox.

In [.filename]#/usr/local/etc/fonts/local.conf# werden die Schriftarten, die mit dem Anti-aliasing-Verfahren benutzt werden sollen und die Eigenschaften des Verfahrens festgelegt. In diesem Abschnitt wird nur die grundlegende Konfiguration von Xft beschrieben. Weitere Details entnehmen Sie bitte der Hilfeseite man:fonts-conf[5].

Die Datei [.filename]#local.conf# ist ein XML-Dokument. Achten Sie beim Editieren der Datei daher auf die richtige Groß- und Kleinschreibung und darauf, dass alle Tags geschlossen sind. Die Datei beginnt mit der üblichen XML-Deklaration gefolgt von einer DOCTYPE-Definition und dem `<fontconfig>`-Tag:

[.programlisting]
....
<?xml version="1.0"?>
        <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
        <fontconfig>
....

Wie vorher erwähnt, stehen schon alle Schriftarten in [.filename]#/usr/local/shared/fonts/# und [.filename]#~/.fonts/# für Anwendungen, die Xft unterstützen, zur Verfügung. Um ein Verzeichnis außerhalb dieser beiden Bäume zu benutzen, fügen Sie eine Zeile wie die nachstehende in [.filename]#/usr/local/etc/fonts/local.conf# hinzu:

[.programlisting]
....
<dir>/path/to/my/fonts</dir>
....

Wenn Sie neue Schriftarten hinzugefügt haben, müssen Sie den Schriftarten-Cache neu aufbauen:

[source,shell]
....
# fc-cache -f
....

Das Anti-aliasing-Verfahren zeichnet Ränder leicht unscharf, dadurch werden kleine Schriften besser lesbar und der Treppenstufen-Effekt bei wird großen Schriften vermieden. Auf normale Schriftgrößen sollte das Verfahren aber nicht angewendet werden, da dies die Augen zu sehr anstrengt. Um kleinere Schriftgrößen als 14 Punkt von dem Verfahren auszuschließen, fügen Sie in [.filename]#local.conf# die nachstehenden Zeilen ein:

[.programlisting]
....
        <match target="font">
	   <test name="size" compare="less">
	       <double>14</double>
	   </test>
	   <edit name="antialias" mode="assign">
	       <bool>false</bool>
	   </edit>
	 </match>
	 <match target="font">
	   <test name="pixelsize" compare="less" qual="any">
	       <double>14</double>
	   </test>
	   <edit mode="assign" name="antialias">
	       <bool>false</bool>
	   </edit>
	 </match>
....

Das Anti-aliasing-Verfahren kann die Abstände einiger Fixschriften falsch darstellen, dies fällt besonders unter KDE auf. Sie können das Problem umgehen, indem Sie die Abstände dieser Schriften auf den Wert `100` festsetzen. Fügen Sie die nachstehenden Zeilen hinzu:

[.programlisting]
....
        <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>
....

Damit werden die Namen der gebräuchlichen Fixschriften auf `"mono"` abgebildet. Für diese Schriften setzen Sie dann den Abstand fest:

[.programlisting]
....
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>
....

Bestimmte Schriftarten, wie Helvetica, können Probleme mit dem Anti-Aliasing-Verfahren verursachen. In der Regel erscheinen diese Schriftarten dann vertikal halbiert. Im schlimmsten Fall stürzen Anwendungen als Folge davon ab. Sie vermeiden dies, indem Sie betroffene Schriftarten in [.filename]#local.conf# von dem Verfahren ausnehmen:

[.programlisting]
....
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>
....

Nachdem Sie [.filename]#local.conf# editiert haben, müssen Sie sicherstellen, dass die Datei mit dem Tag `</fontconfig>` endet. Ist das nicht der Fall, werden die Änderungen nicht berücksichtigt.

Benutzer können personalisierte Einstellungen in [.filename]#~/.fonts.conf# vornehmen. Diese Datei verwendet die gleiche XML-Syntax wie im obigen Beispiel.

Mit einem LCD können Sie sub-pixel sampling anstelle von Anti-aliasing einsetzen. Dieses Verfahren behandelt die horizontal getrennten Rot-, Grün- und Blau-Komponenten eines Pixels gesondert und verbessert damit (teilweise sehr wirksam) die horizontale Auflösung. Die nachstehende Zeile in [.filename]#local.conf# aktiviert diese Funktion:

[.programlisting]
....
         <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>
....

[NOTE]
====
Abhängig von der Art Ihres Bildschirms müssen Sie anstelle von `rgb` eines der folgenden verwenden: `bgr`, `vrgb` oder `vbgr`. Experimentieren Sie und vergleichen, was besser aussieht.
====

[[x-xdm]]
== Der X-Display-Manager

Xorg enthält den X-Display-Manager XDM, um Sitzungen zu verwalten. XDM stellt eine graphische Anmeldemaske zur Verfügung, in der Sie den Server, auf dem eine Sitzung laufen soll, auswählen können und in der Sie die Autorisierungs-Informationen, wie Benutzername und Passwort, eingeben können.

Dieser Abschnitt zeigt, wie der X-Displaymanager konfiguriert wird. Einige grafische Oberflächen enthalten ihre eigenen graphischen Login-Manager. Eine Anleitung zur Konfiguration des GNOME Display-Managers finden Sie im <<x11-wm-gnome>>. Eine Anleitung zur Konfiguration des KDE Display Managers finden Sie im <<x11-wm-kde>>.

=== XDM einrichten

XDM kann über das Paket oder den Port package:x11/xdm[] installiert werden. Nach der Installation lässt sich XDM durch einen Eintrag in [.filename]#/etc/ttys# bei jedem Start des Rechners aktivieren:

[.programlisting]
....
ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure
....

Ändern Sie den Wert `off` zu `on` und speichern Sie die Datei. `ttyv8` zeigt an, dass XDM auf dem neunten virtuellen Terminal ausgeführt wird.

Die Konfigurationsdateien von XDM befinden sich in [.filename]#/usr/local/etc/X11/xdm#. Dieses Verzeichnis enthält einige Dateien, mit denen das Verhalten und Aussehen von XDM beeinflusst werden kann, sowie ein paar Skripte und Programme zur Einrichtung des Desktops. Eine Zusammenfassung der Aufgaben dieser Dateien beschreibt die <<xdm-config-files>>. Die genaue Syntax und Verwendung wird in man:xdm[1] beschrieben.

[[xdm-config-files]]
.Die Konfigurationsdateien von XDM
[cols="1,1", frame="none", options="header"]
|===
| Datei
| Beschreibung

|[.filename]#Xaccess#
|Verbindungen zu XDM werden über das "X Display Manager Connection Protocol" (XDMCP) hergestellt. [.filename]#Xaccess# enthält die Client-Berechtigungen zur Steuerung der XDMCP-Verbindungen entfernter Maschinen. In der Voreinstellung erlaubt diese Datei keine Verbindungen von entfernten Maschinen.

|[.filename]#Xresources#
|Diese Datei steuert das Erscheinungsbild der Bildschirmauswahl und Anmeldemasken von XDM. In der Voreinstellung erscheint ein rechteckiges Anmeldefenster, dass den Hostnamen und einen Anmeldeprompt mit "Login:" und "Password" anzeigt. Das Format dieser Datei entspricht den Dateien im Verzeichnis [.filename]#app-defaults#, die in der Dokumentation von Xorg beschrieben sind.

|[.filename]#Xservers#
|Diese Datei enthält eine Liste entfernter Rechner, die in der Bildschirmauswahl angeboten werden.

|[.filename]#Xsession#
|Dieses Skript wird von XDM aufgerufen, nachdem sich ein Benutzer erfolgreich angemeldet hat. Es verweist auf ein angepasstes Skript in [.filename]#~/.xsession#.

|[.filename]#Xsetup_*#
|Diese Skripten werden automatisch ausgeführt, bevor die Bildschirmauswahl oder die Anmeldemasken angezeigt werden. Für jeden lokalen Bildschirm gibt es ein Skript namens [.filename]#Xsetup_*#, wobei `*` die lokale Bildschirmnummer ist. Normalerweise werden damit ein oder zwei Programme, wie `xconsole`, im Hindergrund gestartet.

|[.filename]#xdm-config#
|Konfiguration für alle auf der Maschine verwalteten Bildschirme.

|[.filename]#xdm-errors#
|Enthält Fehler, die vom Server generiert werden. Wenn ein von XDM verwalteter Bildschirm hängen bleibt, suchen Sie in dieser Datei nach Fehlermeldungen. Für jede Sitzung werden die Meldungen auch in die Datei [.filename]#~/.xsession-errors# des Benutzers geschrieben.

|[.filename]#xdm-pid#
|Die Prozess-ID des gerade laufenden XDM-Prozesses.
|===

=== Fernzugriff einrichten

In der Voreinstellung können sich nur Benutzer auf dem selben System über XDM anmelden. Um es Benutzern anderer Systeme zu ermöglichen, sich mit dem Bildschirm-Server zu verbinden, muss der Zugriffsregelsatz bearbeitet und der Listener aktiviert werden.

Um XDM so zu konfigurieren, dass jede Verbindung angenommen wird, kommentieren Sie die Zeile `DisplayManager.requestPort` in [.filename]#/usr/local/etc/X11/xdm/xdm-config# aus, indem Sie der Zeile ein `!` voranstellen.

[.programlisting]
....
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0
....

Speichern Sie die Änderungen und starten Sie XDM neu. Um den Fernzugriff zu beschränken, sehen Sie sich die Beispiele in [.filename]#/usr/local/etc/X11/xdm/Xaccess# an. Zusätzliche Informationen finden Sie in man:xdm[1]

[[x11-wm]]
== Grafische Oberflächen

Dieser Abschnitt beschreibt die Installation der drei beliebtesten grafischen Oberflächen unter FreeBSD. Eine Oberfläche kann alles von einem einfachen Window-Manager bis hin zu kompletten Anwendungen sein. Mehr als einhundert grafische Oberflächen stehen in der Kategorie [.filename]#x11-wm# der Ports-Sammlung zur Verfügung.

[[x11-wm-gnome]]
=== GNOME

GNOME ist eine benutzerfreundliche Oberfläche. Es besitzt eine Leiste, mit der Anwendungen gestartet werden und die Statusinformationen anzeigen kann. Programme und Daten können auf der Oberfläche abgelegt werden und Standardwerkzeuge stehen zur Verfügung. Es gibt Konventionen, die es Anwendungen leicht machen, zusammenzuarbeiten und ein konsistentes Erscheinungsbild garantieren. Weitere Informationen zu GNOME unter FreeBSD finden Sie unter https://www.FreeBSD.org/gnome[https://www.FreeBSD.org/gnome]. Die Webseite enthält zusätzliche Informationen über die Installation, Konfiguration und Verwaltung von GNOME unter FreeBSD.

Diese grafische Oberfläche kann als Paket installiert werden:

[source,shell]
....
# pkg install gnome3
....

Um GNOME stattdessen aus der Ports-Sammlung zu übersetzen, nutzen Sie das folgende Kommando. GNOME ist eine große Anwendung, die sogar auf einem schnellen Computer einige Zeit zum Übersetzten benötigt.

[source,shell]
....
# cd /usr/ports/x11/gnome3
# make install clean
....

GNOME benötigt ein eingehängtes [.filename]#/proc# Dateisystem. Fügen Sie daher die folgende Zeile in [.filename]#/etc/fstab# ein, damit man:procfs[5] beim Systemstart automatisch eingehängt wird:

[.programlisting]
....
proc           /proc       procfs  rw  0   0
....

GNOME benötigt D-Bus und HAL für einen Nachrichtenbus und Hardware Abstraktion. Diese Anwendungen werden automatisch als Abhängigkeiten von GNOME installiert. Aktivieren Sie die Dienste in [.filename]#/etc/rc.conf#, sodass sie automatisch gestartet werden wenn das System bootet:

[.programlisting]
....
dbus_enable="YES"
hald_enable="YES"
....

Nach der Installation weisen Sie Xorg an, GNOME zu starten. Der einfachste Weg, dies zu tun, ist über den GNOME Display Manager GDM, der als Teil des GNOME-Desktops installiert wird. Um GDM zu aktivieren, fügen Sie folgende Zeile in [.filename]#/etc/rc.conf# ein:

[.programlisting]
....
gdm_enable="YES"
....

In der Regel ist es ratsam, alle GNOME-Dienste zu starten. Um dies zu erreichen, fügen Sie die folgende Zeile in [.filename]#/etc/rc.conf# ein:

[.programlisting]
....
gnome_enable="YES"
....

GDM wird nun automatisch gestartet, wenn das System hochfährt.

GNOME kann alternativ auch von der Kommandozeile gestartet werden, wenn eine entsprechend konfigurierte [.filename]#~/.xinitrc# vorliegt. Existiert diese Datei bereits, ersetzen Sie den Aufruf des Window-Managers durch /usr/local/bin/gnome-session. Wenn [.filename]#.xinitrc# nicht existiert, erstellen Sie die Datei mit folgendem Befehl:

[source,shell]
....
% echo "exec /usr/local/bin/gnome-session" > ~/.xinitrc
....

Eine dritte Methode ist, XDM als Display-Manager zu verwenden. In diesem Fall erstellen Sie eine ausführbare [.filename]#~/.xsession#:

[source,shell]
....
% echo "exec /usr/local/bin/gnome-session" > ~/.xsession
....

[[x11-wm-kde]]
=== KDE

KDE ist eine weitere, leicht zu benutzende Desktop-Umgebung. Dieser Desktop bietet eine Sammlung von Anwendungen mit einheitlichem Erscheinungsbild (look and feel), einheitlichen Menüs, Werkzeugleisten, Tastenkombinationen, Farbschemata, Internationalisierung und einer zentralen, dialoggesteuerten Desktop-Konfiguration. Weitere Informationen zu KDE finden Sie unter http://www.kde.org/[http://www.kde.org/]. Spezifische Informationen für FreeBSD finden Sie unter http://freebsd.kde.org/[http://freebsd.kde.org].

Um KDE als Paket zu installieren, geben Sie ein:

[source,shell]
....
# pkg install x11/kde5
....

Um KDE stattdessen aus dem Quellcode zu übersetzen, verwenden Sie das folgende Kommando. Bei der Installation wird ein Menü zur Auswahl der Komponenten angezeigt. KDE ist eine große Anwendung, die sogar auf einem schnellen Computer einige Zeit zum Übersetzen benötigt.

[source,shell]
....
# cd /usr/ports/x11/kde5
# make install clean
....

KDE benötigt ein eingehängtes [.filename]#/proc#. Fügen Sie diese Zeile in [.filename]#/etc/fstab# ein, um das Dateisystem automatisch beim Systemstart einzuhängen:

[.programlisting]
....
proc           /proc       procfs  rw  0   0
....

KDE benötigt D-Bus und HAL für einen Nachrichtenbus und Hardware Abstraktion. Diese Anwendungen werden automatisch als Abhängigkeiten von KDE installiert. Aktivieren Sie die Dienste in [.filename]#/etc/rc.conf#, sodass sie automatisch gestartet werden wenn das System bootet:

[.programlisting]
....
dbus_enable="YES"
hald_enable="YES"
....

Seit KDE Plasma 5 wird der KDE Display-Manager KDM nicht weiterentwickelt. Eine mögliche Alternative ist SDDM. Sie können das Paket wie folgt installieren:

[source,shell]
....
# pkg install x11/sddm
....

Fügen Sie anschließend folgende Zeile in [.filename]#/etc/rc.conf# ein:

[.programlisting]
....
sddm_enable="YES"
....

Eine zweite Möglichkeit KDE zu starten, ist `startx` in der Kommandozeile einzugeben. Damit dies funktioniert, wird folgende Zeile in [.filename]#~/.xinitrc# benötigt:

[.programlisting]
....
exec ck-launch-session startplasma-x11
....

Eine dritte Möglichkeit ist KDE über XDM zu starten. Um dies zu tun, erstellen Sie eine ausführbare [.filename]#~/.xsession# wie folgt:

[source,shell]
....
% echo "exec ck-launch-session startkde" > ~/.xsession
....

Sobald KDE gestartet wird, finden Sie im integrierten Hilfesystem weitere Informationen zur Benutzung der verschiedenen Menüs und Anwendungen.

[[x11-wm-xfce]]
=== Xfce

Xfce ist eine Desktop-Umgebung, basierend auf den von GNOME verwendeten GTK+-Bibliotheken. Es hat einen geringeren Speicherbedarf und stellt dabei einen schlichten, effizienten und einfach zu benutzenden Desktop zur Verfügung. Xfce ist vollständig konfigurierbar, verfügt über eine Programmleiste mit Menüs, Applets und einen Programmstarter. Zudem sind ein Datei-Manager und ein Sound-Manager enthalten und das Programm ist über Themes anpassbar. Da es schnell, leicht und effizient ist, eignet sich Xfce ideal für ältere oder langsamere Rechner mit wenig Speicher. Weitere Informationen zu Xfce finden Sie unter http://www.xfce.org/[http://www.xfce.org].

Um das Paket Xfce zu installieren, geben Sie folgendes ein:

[source,shell]
....
# pkg install xfce
....

Um stattdessen den Port zu übersetzen:

[source,shell]
....
# cd /usr/ports/x11-wm/xfce4
# make install clean
....

Xfce benutzt D-Bus als Nachrichtenbus. Die Komponente wird automatisch als Abhängigkeit von Xfce installiert. Um D-Bus beim Hochfahren des Systems zu starten, fügen Sie folgende Zeile in [.filename]#/etc/rc.conf# ein:

[.programlisting]
....
dbus_enable="YES"
....

Im Gegensatz zu GNOME oder KDE, besitzt Xfce keinen eigenen Login-Manager. Damit Xfce von der Kommandozeile mit `startx` gestartet werden kann, muss zunächst [.filename]#~/.xinitrc# mit diesem Befehl erstellt werden:

[source,shell]
....
% echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xinitrc
....

Alternativ dazu kann XDM verwendet werden. Um diese Methode zu konfigurieren, erstellen Sie eine ausführbare [.filename]#~/.xsession#:

[source,shell]
....
% echo ". /usr/local/etc/xdg/xfce4/xinitrc" > ~/.xsession
....

[[x-compiz-fusion]]
== Compiz Fusion installieren

Der Einsatz von hübschen 3D-Effekten ist eine Möglichkeit, die Benutzerfreundlichkeit eines Desktop-Rechners zu erhöhen.

Die Installation des Compiz Fusion Pakets ist einfach, aber bei der Konfiguration sind ein paar Schritte notwendig, die nicht in der Dokumentation des Ports beschrieben werden.

[[x-compiz-video-card]]
=== Konfiguration des FreeBSD nVidia-Treibers

Desktop-Effekte erzeugen eine hohe Last auf der Grafikkarte. Für nVidia-basierte Grafikkarten sind die proprietären Treiber für eine gute Leistung erforderlich. Benutzer anderer Grafikkarten können diesen Abschnitt überspringen und mit der Konfiguration von Xorg fortfahren.

Lesen Sie die extref:{faq}[FAQ zu diesem Thema, x], um herauszufinden, wie der richtige nVidia-Treiber ermittelt werden kann.

Nachdem der richtige Treiber für die Karte ermittelt wurde, kann er wie jedes andere Paket installiert werden.

Um beispielsweise den aktuellsten Treiber zu installieren:

[source,shell]
....
# pkg install x11/nvidia-driver
....

Der Treiber erstellt ein Kernelmodul, welches beim Systemstart geladen werden muss. Fügen folgende Zeile in [.filename]#/boot/loader.conf# ein:

[.programlisting]
....
nvidia_load="YES"
....

[NOTE]
====
Um das Kernelmodul direkt in den laufenden Kernel zu laden, kann der Befehl `kldload nvidia` eingeben werden. Allerdings wurde festgestellt, dass einige Versionen von Xorg nicht richtig funktionieren, wenn der Treiber nicht beim Systemstart geladen wurde. Nach der Änderung in [.filename]#/boot/loader.conf# wird daher ein Neustart des Systems empfohlen.
====

Wenn das Kernelmodul geladen ist, muss in der Regel nur noch eine einzige Zeile in [.filename]#xorg.conf# geändert werden, um den proprietären Treiber zu aktivieren:

Suchen Sie folgende Zeile in [.filename]#/etc/X11/xorg.conf#:

[.programlisting]
....
Driver      "nv"
....

und ändern Sie die Zeile zu:

[.programlisting]
....
Driver      "nvidia"
....

Wenn Sie nun die grafische Oberfläche starten, sollten Sie vom nVidia Startbildschirm begrüßt werden. Alles sollte wie gewohnt funktionieren.

[[xorg-configuration]]
=== Konfiguration von Desktop-Effekten in xorg.conf

Um Compiz Fusion zu aktivieren, muss [.filename]#/etc/X11/xorg.conf# angepasst werden:

Fügen Sie diesen Abschnitt hinzu, um Composite-Effekte zu aktivieren:

[.programlisting]
....
Section "Extensions"
    Option         "Composite" "Enable"
EndSection
....

Suchen Sie den Abschnitt "Screen", der ähnlich wie hier gezeigt aussehen sollte:

[.programlisting]
....
Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    ...
....

und fügen Sie die beiden folgenden Zeilen hinzu (z.B. nach "Monitor"):

[.programlisting]
....
DefaultDepth    24
Option         "AddARGBGLXVisuals" "True"
....

Suchen Sie den Abschnitt "Subsection", der sich auf die gewünschte Bildschirmauflösung bezieht. Wenn Sie z.B. 1280x1024 verwenden möchten, suchen Sie den folgenden Abschnitt. Sollte die gewünschte Auflösung nicht in allen Unterabschnitten vorhanden sein, können Sie den entsprechenden Eintrag manuell hinzufügen:

[.programlisting]
....
SubSection     "Display"
    Viewport    0 0
    Modes      "1280x1024"
EndSubSection
....

Für Composite-Effekte wird eine Farbtiefe von 24 Bit benötigt. Ändern Sie dazu den obigen Abschnitt wie folgt:

[.programlisting]
....
SubSection     "Display"
    Viewport    0 0
    Depth       24
    Modes      "1280x1024"
EndSubSection
....

Zuletzt muss noch sichergestellt werden, dass die Module "glx" und "extmod" im Abschnitt "Module" geladen werden:

[.programlisting]
....
Section "Module"
    Load           "extmod"
    Load           "glx"
    ...
....

Die vorangegangenen Einstellungen können automatisch mit package:x11/nvidia-xconfig[] erledigt werden, indem Sie folgende Kommandos als root ausführen:

[source,shell]
....
# nvidia-xconfig --add-argb-glx-visuals
# nvidia-xconfig --composite
# nvidia-xconfig --depth=24
....

[[compiz-fusion]]
=== Installation und Konfiguration von Compiz Fusion

Die Installation von Compiz Fusion ist so einfach wie die Installation jedes anderen Pakets:

[source,shell]
....
# pkg install x11-wm/compiz-fusion
....

Wenn die Installation abgeschlossen ist, starten Sie (als normaler Benutzer) den grafischen Desktop mit folgendem Befehl:

[source,shell]
....
% compiz --replace --sm-disable --ignore-desktop-hints ccp &
% emerald --replace &
....

Der Bildschirm wird für einige Sekunden flackern, da der Window Manager (z.B. Metacity, wenn Sie GNOME benutzen) von Compiz Fusion ersetzt wird. Emerald kümmert sich um die Fensterdekoration (z.B. die Schatzflächenn schließen, minimieren und maximieren, Titelleisten, usw.).

Sie können dieses einfache Skript anpassen und es dann beim Start automatisch ausführen lassen (z.B. durch Hinzufügen von "Sessions" beim GNOME-Desktop):

[.programlisting]
....
#! /bin/sh
compiz --replace --sm-disable --ignore-desktop-hints ccp &
emerald --replace &
....

Speichern Sie die Datei in Ihrem Heimatverzeichnis, beispielsweise als [.filename]#start-compiz# und machen Sie die Datei ausführbar:

[source,shell]
....
% chmod +x ~/start-compiz
....

Benutzen Sie dann die grafische Oberfläche, um das Skript zu [.guimenuitem]#Autostart-Programme# hinzuzufügen (beim GNOME-Desktop unter [.guimenuitem]#Systemwerkzeuge#, [.guimenuitem]#Einstellungen#, [.guimenuitem]#Sessions#).

Um die gewünschten Effekte und Einstellungen zu konfigurieren, starten Sie (wieder als normaler Benutzer) den Compiz Config Einstellungs-Manager:

[source,shell]
....
% ccsm
....

[NOTE]
====
In GNOME finden Sie diese Einstellungen wieder im Menü unter [.guimenuitem]#Systemwerkzeuge#, [.guimenuitem]#Einstellungen#.
====

Wenn Sie "gconf support" während der Installation ausgewählt haben, können Sie diese Einstellungen auch im `gconf-editor` unter `apps/compiz` finden.

[[x11-troubleshooting]]
== Fehlersuche

Wenn die Maus nicht funktioniert, müssen Sie diese zuerst konfigurieren. In neueren Versionen von Xorg werden die `InputDevice`-Abschnitte in [.filename]#xorg.conf# ignoriert, um stattdessen die automatisch erkannten Geräte zu verwenden. Um das alte Verhalten wiederherzustellen, fügen Sie folgende Zeile zum Abschnitt `ServerLayout` oder `ServerFlags` dieser Datei hinzu:

[.programlisting]
....
Option "AutoAddDevices" "false"
....

[NOTE]
====
Wie zuvor erwähnt, wird standardmäßig der hald-Dienst automatisch die Tastatur erkennen. Es kann jedoch passieren, dass das Tastaturlayout oder das Modell nicht korrekt erkannt wird. Grafische Oberflächen wie GNOME, KDE oder Xfce stellen Werkzeuge für die Konfiguration der Tastatur bereit. Es ist allerdings auch möglich, die Tastatureigenschaften direkt zu setzen, entweder mit Hilfe von man:setxkbmap[1] oder mit einer Konfigurationsregel von hald.

Wenn Sie zum Beispiel eine PC 102-Tasten Tastatur mit französischem Layout verwenden möchten, müssen sie eine Tastaturkonfigurationsdatei [.filename]#x11-input.fdi# für hald im Verzeichnis [.filename]#/usr/local/etc/hal/fdi/policy# anlegen. Diese Datei sollte die folgenden Zeilen enthalten:

[.programlisting]
....
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
      <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
      <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
    </match>
  </device>
</deviceinfo>
....

Wenn diese Datei bereits existiert, kopieren Sie nur die Zeilen in die Datei, welche die Tastaturkonfiguration betreffen.

Sie müssen Ihren Computer neu starten, um hald zu zwingen, diese Datei einzulesen.

Es ist auch möglich, die gleiche Konfiguration von einem X-Terminal oder einem Skript über den folgenden Befehl heraus zu tätigen:

[source,shell]
....
% setxkbmap -model pc102 -layout fr
....

[.filename]#/usr/local/shared/X11/xkb/rules/base.lst# enthält die zur Verfügung stehenden Tastatur- und Layoutoptionen.
====

Die Konfigurationsdatei [.filename]#xorg.conf.new# kann nun an bestimmte Bedürfnisse angepasst werden. Öffnen Sie die Datei in einem Editor, wie man:emacs[1] oder man:ee[1]. Falls der Monitor ein älteres oder ungewöhnliches Modell ist und keine automatische Erkennung unterstützt, können die Synchronisationsfrequenzen im Abschnitt `"Monitor"` der [.filename]#xorg.conf.new# eingetragen werden.

[.programlisting]
....
Section "Monitor"
      Identifier   "Monitor0"
      VendorName   "Monitor Vendor"
      ModelName    "Monitor Model"
      HorizSync    30-107
      VertRefresh  48-120
EndSection
....

Die meisten Monitore unterstützen die automatische Erkennung der Synchronisationsfrequenzen, so dass eine manuelle Eingabe der Werte nicht erforderlich ist. Für die wenigen Monitore, die keine automatische Erkennung unterstützen, sollten nur die vom Hersteller zur Verfügung gestellten Werte eingegeben werden, um einen möglichen Schaden zu vermeiden.

X unterstützt die Energiesparfunktionen (DPMS, Energy Star) für Monitore. Mit man:xset[1] können die Zeitlimits für die DPMS-Modi standby, suspend, off vorgeben, oder zwingend aktiviert werden. Die DPMS-Funktionen können mit der folgenden Zeile im Abschnitt `"Monitor"` aktiviert werden:

[.programlisting]
....
Option         "DPMS"
....

Die gewünschte Auflösung und Farbtiefe stellen sie im Abschnitt `"Screen"` ein:

[.programlisting]
....
Section "Screen"
      Identifier "Screen0"
      Device     "Card0"
      Monitor    "Monitor0"
      DefaultDepth 24
      SubSection "Display"
	      Viewport  0 0
	      Depth     24
	      Modes     "1024x768"
      EndSubSection
EndSection
....

Mit `DefaultDepth` wird die standardmäßige Farbtiefe angegeben. Mit der Option `-depth` von man:Xorg[1] lässt sich die vorgegebene Farbtiefe überschreiben. `Modes` gibt die Auflösung für die angegebene Farbtiefe an. Die Farbtiefe im Beispiel beträgt 24 Bits pro Pixel, die zugehörige Auflösung ist 1024x768 Pixel. Beachten Sie, dass in der Voreinstellung nur Standard-VESA-Modi der Grafikkarte angegeben werden können.

Sichern Sie die Konfigurationsdatei. Testen Sie anschließend die Konfiguration, wie oben beschrieben.

[NOTE]
====
Bei der Fehlersuche stehen Ihnen die Protokolldateien von Xorg zur Verfügung. Die Protokolle enthalten Informationen über alle Geräte, die mit dem Xorg-Server verbunden ist. Die Namen der Xorg-Protkolldateien haben das Format [.filename]#/var/log/Xorg.0.log#. Der exakte Name der Datei variiert dabei von [.filename]#Xorg.0.log# bis [.filename]#Xorg.8.log#, und so weiter.
====

Wenn alles funktioniert, installieren Sie die Datei an einen Ort, an dem man:Xorg[1] sie finden kann. Typischerweise ist dies [.filename]#/etc/X11/xorg.conf# oder [.filename]#/usr/local/etc/X11/xorg.conf#.

[source,shell]
....
# cp xorg.conf.new /etc/X11/xorg.conf
....

Damit ist die Konfiguration von Xorg abgeschlossesn. Xorg kann nun mit dem Programm man:startx[1] gestartet werden. Alternativ kann der Xorg-Server auch mithilfe von man:xdm[1] gestartet werden.

=== Konfiguration des Intel(R) `i810` Graphics Chipsets

Der Intel(R) i810-Chipset benötigt den Treiber [.filename]#agpgart#, die AGP-Schnittstelle für Xorg. Die Manualpage für den Treiber man:agp[4] enthält weitere Informationen.

Ab jetzt kann die Hardware wie jede andere Grafikkarte auch konfiguriert werden. Beachten Sie, dass der Treiber man:agp[4] nicht nachträglich in einen laufenden Kernel geladen werden kann. Er muss entweder fest im Kernel eingebunden sein, oder beim Systemstart über [.filename]#/boot/loader.conf# geladen werden.

=== Einen Widescreen-Monitor einsetzen

Dieser Abschnitt geht über die normalen Konfigurationsarbeiten hinaus und setzt ein wenig Vorwissen voraus. Selbst wenn die Standardwerkzeuge zur X-Konfiguration bei diesen Geräten nicht zum Erfolg führen, gibt es in den Protokolldateien genug Informationen, mit denen Sie letztlich doch einen funktionierenden X-Server konfigurieren können. Alles, was Sie dazu benötigen, ist ein Texteditor.

Aktuelle Widescreen-Formate (wie WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, und andere mehr) unterstützen Seitenverhältnisse wie 16:10 oder 10:9, die unter X Probleme verursachen können. Bei einem Seitenverhältnis von 16:10 sind beispielsweise folgende Auflösungen möglich:

* 2560x1600
* 1920x1200
* 1680x1050
* 1440x900
* 1280x800

Irgendwann wird die Konfiguration vereinfacht werden, dass nur noch die Auflösung als `Mode` in `Section "Screen"` eingtragen wird, so wie hier:

[.programlisting]
....
Section "Screen"
Identifier  "Screen 0"
Device	    "Card 0"
Monitor	    "Monitor0"
Default Depth 24
SubSection  "Display"
	ViewPort  0 0
	Depth	  24
	Modes	  "1680x1050"
EndSubSection
EndSection
....

Xorg ist intelligent genug, um die Informationen zu den Auflösungen über I2C/DDC zu beziehen, und weiß daher, welche Auflösungen und Frequenzen der Widescreen-Monitor unterstützt.

Wenn diese `ModeLines` in den Treiberdateien nicht vorhanden sind, kann es sein, dass Sie Xorg beim Finden der korrekten Werte unterstützen müssen. Dazu extrahieren Sie die benötigten Informationen aus [.filename]#/var/log/Xorg.0.log# und erzeugen daraus eine funktionierende `ModeLine`. Suchen Sie nach Zeilen ähnlich den folgenden:

[.programlisting]
....
(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz
....

Diese Informationen werden auch als EDID-Informationen bezeichnet. Um daraus eine funktionierende `ModeLine` zu erzeugen, müssen lediglich die Zahlen in die korrekte Reihenfolge gebracht werden:

[.programlisting]
....
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
....

Die korrekte `ModeLine` in `Section "Monitor"` würde für dieses Beispiel folgendermaßen aussehen:

[.programlisting]
....
Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection
....

Nachdem diese Äderungen durchgeführt sind, sollte X auch auf Ihrem neuen Widescreen-Monitor starten.

[[compiz-troubleshooting]]
=== Fehersuche in Compiz Fusion

==== Ich habe Compiz Fusion installiert und anschließend die hier erwähnten Kommandos eingegeben. Nun fehlen den Fenstern die Titelleisten und Schaltflächen. Was kann ich tun?

Wahrscheinlich fehlt eine Einstellung in [.filename]#/etc/X11/xorg.conf#. Überprüfen Sie diese Datei gründlich, und überprüfen Sie insbesondere die Richtlinien `DefaultDepth` und `AddARGBGLXVisuals`.

==== Wenn ich Compiz Fusion starte, bringt dass den X-Server zum Absturz. Was kann ich tun?

Wenn Sie [.filename]#/var/log/Xorg.0.log# durchsuchen, finden Sie wahrscheinlich Fehlermeldungen, die während des Starts von X ausgegeben werden. Die häufigste Meldung ist:

[source,shell]
....
(EE) NVIDIA(0):     Failed to initialize the GLX module; please check in your X
(EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
(EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
(EE) NVIDIA(0):     you continue to encounter problems, Please try
(EE) NVIDIA(0):     reinstalling the NVIDIA driver.
....

Dies ist für gewöhnlich der Fall, wenn Sie Xorg aktualisieren. Sie müssen das Paket package:x11/nvidia-driver[] neu installieren, damit GLX neu gebaut wird.
