Das X Window System (auch: X Version 11, X11, X, aber nicht X-Windows) ist eine Sammlung von Protokollen, Computerprogrammen und Standards zur Ansteuerung grafischer Bildschirme im Allgemeinen und zur Anzeige einer grafischen Benutzungsoberfläche, vor allem unter Unix-Systemen. Der X-Server steuert die Ein- und Ausgabegeräte wie die Maus, Tastatur, den Bildschirm und die Grafikkarte.
[...]
Das eigentliche Aussehen und Verhalten des Fenstersystems wird nicht von X bestimmt, sondern vom Fenstermanager, der wie eine normale Anwendung einfach als Client des X-Servers läuft. Für das Aussehen der Programme selbst ist eine Oberflächenbibliothek (siehe GUI-Toolkits) verantwortlich, die das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z.B. Menüs und Schaltflächen übernimmt. (mehr Informationen im Wikipedia-Artikel).
Der X-Server hat sich in den letzten Jahren kontinuierlich weiterentwickelt. Damit einher ging die abnehmende Bedeutung der Konfiguration über die zentrale Datei /etc/X11/xorg.conf. Grafikkarten und Bildschirme werden nun vollautomatisch oder - bei Bedarf - manuell mittels RandR konfiguriert. Eine Sonderrolle spielen nur noch Eingabegeräte wie spezielle Tastaturen, Mäuse oder Grafiktabletts.
Es gibt mehrere Varianten, insbesondere bei Bildschirmen manuell einzugreifen:
RandR bzw. der Befehl xrandr
über die Datei /etc/X11/xorg.conf (siehe unten)
Dieser Abschnitt ist leider notwendig, da sich manche Ubuntu-Versionen abweichend verhalten. Zum besseren Verständnis ist dieser Abschnitt chronologisch geordnet.
Ubuntu 8.04 war die letzte Ubuntu-Version, die eine xorg.conf voraussetzte und Fehler in dieser Datei streng bestrafte: dann gab es weder eine grafische Anmeldung noch ein grafische Desktop-Umgebung. Glücklich durften sich diejenigen schätzen, die eine Fehlerbehebung über die Kommandozeile beherrschten - ein Wissensvorsprung, der auch heute noch sehr nützlich ist. Aber um die Situation nicht dramatischer darzustellen als sie es faktisch war: auch damals wurden (wie heute) bei der Installation Voreinstellungen genutzt, die die meisten Anwender zufriedenstellten.
Zur manuellen Konfiguration siehe unten.
Ab Ubuntu 10.04 wurden manche der mit Ubuntu 8.10 (bis einschließlich 9.10) neu eingeführten Verfahren wieder überflüssig: HAL spielt keine Rolle mehr und wurde durch udev ersetzt. Zusätzlich wurde die Konfiguration von Eingabegeräten über xorg.conf.d eingeführt. Eine vorhandene xorg.conf wird berücksichtigt - aufgrund der automatischen Konfiguration des XServers teilweise aber nur mit eingeschränkter Wirkung. Dadurch haben z.B. gravierende Fehler keine Auswirkungen mehr.
In Ubuntu 11.10 wird die Konfiguration über xorg.conf wieder nicht genutzt bzw. ist nicht vorhanden. Wer die Datei trotzdem benötigt, kann diese mit:
sudo Xorg -configure
erzeugen und anschließend bearbeiten.
Die Konfigurationsdateien des X-Servers sind im Verzeichnis /etc/X11/ abgelegt. Die zentrale Konfigurationsdatei ist /etc/X11/xorg.conf. Zum Bearbeiten sind ein Editor [1] und Root-Rechte [2] erforderlich.
Jeder Abschnitt beginnt mit einer Section "<Sektionsname>
-Zeile und endet mit einer EndSection-Zeile
. Innerhalb jedes einzelnen Abschnitts befinden sich verschiedene Zeilen mit einem Optionsnamen und mindestens einem Optionswert, der auch in Anführungszeichen (") angegeben sein kann. Mit einem Rauten-Symbol (#) beginnende Zeilen werden vom X-Server nicht gelesen und stellen Kommentare oder Anmerkungen dar. Einige der Optionen in /etc/X11/xorg.conf akzeptieren boolesche Werte (wahr/nicht wahr), was die gegebene Funktion entweder ein- oder ausschaltet. Verwendbare Werte sind:
1
, on
, true
, oder yes
- Schaltet eine Option ein.
0
, off
, false
, oder no
- Schaltet eine Option aus.
Der Abschnitt Files
legt für den X-Server wichtige Pfade fest, hier z.B. die Pfade für die Schriften:
Section "Files" FontPath "/usr/share/X11/fonts/misc" FontPath "/usr/share/X11/fonts/cyrillic" FontPath "/usr/share/X11/fonts/100dpi/:unscaled" FontPath "/usr/share/X11/fonts/75dpi/:unscaled" FontPath "/usr/share/X11/fonts/Type1" FontPath "/usr/share/X11/fonts/CID" FontPath "/usr/share/fonts/100dpi" FontPath "/usr/share/fonts/75dpi" # paths to defoma fonts FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID" EndSection
Der Eintrag FontPath
wird im Files-Abschnitt am häufigsten verwendet. Dieser Eintrag gibt an, wo der X-Server die Zeichensätze ("fonts") bekommt (vom xfs Font-Server). Beispiele können hier im Wiki unter Schriften gefunden werden.
Der Abschnitt Module
gibt dem X-Server an, welche Module des /usr/X11R6/lib/modules-Verzeichnisses zu laden sind.
Section "Module" Load "i2c" Load "bitmap" Load "ddc" Load "dri" Load "extmod" Load "freetype" Load "glx" Load "int10" Load "type1" Load "vbe" EndSection
Die Module statten den X-Server mit zusätzlichen Funktionen aus. Häufig verwendete Module sind in der folgenden Übersicht aufgeführt.
Modul | Funktion |
glx | Unterstützung für das Rendern mittels OpenGL |
dri | Unterstützung für DRI (Direct Rendering Infrastructure) im X-Server |
vbe | Unterstützung für VESA-BIOS-Erweiterungen. Erlaubt die Abfrage der Monitoreigenschaften mittels der Grafikkarte |
ddc | Unterstützung für den Datenanzeigekanal (Data Display Channel). Erlaubt die Abfrage der Monitoreigenschaften mittels der Grafikkarte |
int10 | Real-Mode-x86-Emulator zum Softboot sekundärer VGA-Karten. Sollte aktiviert sein, wenn vbe aktiviert ist |
dbe | Aktiviert die Double-Buffering-Erweiterung im Server. Sinnvoll für Animationen und Video-Operationen |
extmod | Aktiviert viele traditionelle und oft verwendete Erweiterungen, wie nichtrechteckige Fenster, gemeinsamer Speicher, Video-Modus-Umschaltung, DGA und Xv |
record | Implementiert die RECORD-Erweiterung, oft für Server-Tests verwendet |
bitmap | Font-Rasterer (ebenso wie das freetype - und das type1 -Modul) |
Jeder InputDevice
-Abschnitt konfiguriert ein Eingabe-Gerät wie eine Maus, eine Tastatur oder ein Touchpad, das für die Eingabe von Informationen in das System mithilfe des X-Servers verwendet wird. Die meisten Systeme besitzen mindestens zwei InputDevice
-Abschnitte, jeweils einen für Tastatur und Maus.
Ein typischer Abschnitt für eine Tastatur sieht so aus:
Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "de" Option "XkbVariant" "nodeadkeys" Option "XkbOptions" "ctrl:nocaps" EndSection
häufige Einträge für Tastaturen:
XkbModel
- Das Tastaturmodell (pc102,pc104,pc105)
XkbOptions
- mit dieser Option beeinflusst man das Verhalten bestimmter Tasten.
Ein typischer Abschnitt für eine Maus:
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection
Diese Einträge werden am häufigsten in einem InputDevice
-Abschnitt verwendet:
Identifier
- Gibt einen eindeutigen Namen für diesen InputDevice
-Abschnitt an. Dieser Eintrag ist notwendig.
Driver
- Gibt X den Namen des Treibers an, der für die Verwendung des Geräts zu laden ist.
Option
- Gibt Geräte-bezogene Optionen an.
Für eine Maus enthalten diese Optionen Folgendes:
Device
- Gibt den Ort des physischen Geräts an, für serielle Mäuse gibt man /dev/ttyS0
an. Die Null ist der erste serielle Port und muss ggf. angepasst werden.
Protocol
- Gibt das von der Maus verwendete Protokoll an, wie IMPS/2
oder PS/2
, für serielle Mäuse gibt man meist auto
an.
Emulate3Buttons
- Gibt an, ob eine Zwei-Tasten-Maus eine dritte Taste emulieren soll, wenn beide Tasten gleichzeitig gedrückt werden.
Jeder Monitor
-Abschnitt konfiguriert einen vom System verwendeten Monitor. Mindestens ein Monitor
-Abschnitt muss vorhanden sein, es können aber auch mehrere sein - für jeden zusätzlichen Monitor ein Abschnitt. Detaillierte Informationen zu Bildschirmauflösungen und Wiederholraten sind unter Bildschirmauflösung im Wiki nachzulesen.
Hier ein typischer Monitor
-Abschnitt für einen TFT-Monitor:
Section "Monitor" Identifier "S19-1" Option "DPMS" DisplaySize 376 301 EndSection
Hier ein typischer Monitor
-Abschnitt für einen klassischen Röhrenmonitor (CRT):
Section "Monitor" Identifier "e175" Option "DPMS" HorizSync 30-85 VertRefresh 50-120 DisplaySize 328 248 EndSection
Alle hier aufgeführten Werte sind Beispielwerte und dürfen nicht 1:1 übernommen werden. Das Ansteuern eines Bildschirms mit falschen Parametern kann im ungünstigsten Fall zu dessen Zerstörung führen - auch wenn sich viele Monitore heutzutage selbst abschalten, um Beschädigungen zu vermeiden.
Häufige Einträge im Monitor
-Abschnitt:
Identifier
- Verleiht dem Monitor einen eindeutigen Namen. Dieser Eintrag ist erforderlich.
VendorName
- Ein optionaler Eintrag, der den Hersteller des Monitors angibt.
ModelName
- Ein optionaler Eintrag, der den Namen des Modells des Monitors angibt.
DisplaySize
- Ein optionaler Eintrag, der - in Millimetern - die physische Größe des Bildschirmbereichs angibt.
HorizSync
- Gibt die Bandbreite der Horizontalfrequenz in kHz an, die mit dem Monitor kompatibel ist. Diese Werte werden vom X-Server als Richtlinie verwendet, so dass dieser weiß, ob bestimmte Werte eines Modeline
-Eintrags für den Monitor zu verwenden sind.
VertRefresh
- Listet die vom Monitor unterstützten vertikalen Bildwiederholfrequenzen in Hz auf. Auch diese Werte werden vom X-Server als Richtlinie verwendet, so dass dieser weiß, ob bestimmte Werte eines Modeline
-Eintrags für den Monitor zu verwenden sind.
Option "<option-name>"
- Ein optionaler Eintrag, der weitere Parameter für den Monitor
-Abschnitt angibt.
Modeline
- Dient der optionalen Angabe der Grafikmodi des Monitors bei besonderen Auflösungen mit bestimmten Horizontal- und Vertikalfrequenzen.
Im Device
-Abschnitt wird die Grafikkarte für das System eingerichtet. Mindestens ein Device
-Abschnitt muss immer vorhanden sein, es können auch mehrere Abschnitte vorhanden sein - für jede im System vorhandene Grafikkarte ein Abschnitt.
Das folgende Beispiel zeigt einen typischen Device
-Abschnitt für eine Grafikkarte:
Section "Device" Identifier "NVIDIA Corporation NV34 [GeForce FX 5200]" BusID "PCI:1:0:0" Driver "nv" EndSection
Die folgenden Einträge sind häufig in einem Device
-Abschnitt zu finden:
Identifier
- Ein eindeutiger Name für diesen Device
-Abschnitt. Dieser Eintrag ist notwendig.
Driver
- Gibt an, welchen Treiber der X-Server laden muss, um die Grafikkarte verwenden zu können.
BusID
- Gibt (optional) den Bus an, in dem sich die Grafikkarte befindet. Diese Option ist nur bei Systemen mit mehreren Grafikkarten notwendig.
Option "<option-name>"
- Ein optionaler Eintrag, der weitere Parameter für den Device
-Abschnitt angibt. In den man-Seiten zu xorg.conf werden gültige Optionen aufgelistet. Eine der häufiger verwendeten Optionen ist "dpms", die die Einstellung Service Star Energy Compliance für den Monitor aktiviert.
VideoRam
- Der Arbeitsspeicher (RAM) der Grafikkarte in Kilobytes (optional). Diese Einstellung ist normalerweise nicht notwendig, da der X-Server gewöhnlich die Grafikkarte automatisch auf den verfügbaren Speicher prüft. Es gibt aber Grafikkarten, die X nicht automatisch erkennen kann, weswegen diese Option die Möglichkeit bietet, manuell die Größe des Grafik-RAM anzugeben.
VendorName
- Gibt (optional) den Hersteller der Grafikkarte an.
BoardName
- Gibt (optional) den Namen der Grafikkarte an.
Screen
- Ein optionaler Eintrag, der angibt, welchen Anschluss der Grafikkarte dieser Device
-Abschnitt konfiguriert. Diese Option ist nur bei Grafikkarten mit mehr als einem Anschluss nützlich. Wenn mehrere Monitore an eine Grafikkarte angeschlossen sind, dann müssen auch verschiedene Device
-Abschnitte mit einem jeweils unterschiedlichen Screen
-Wert zur Verfügung stehen. Der Wert eines Screen
-Eintrags ist eine ganzzahlige Nummer. Der erste Anschluss hat den Wert 0
, und für jeden weiteren Anschluss wird diese Zahl um eins erhöht.
Nvidia Binärtreiber konfigurieren
ATI fglrx konfigurieren
Matrox Parhelia Grafikkarte konfigurieren (älterer Artikel, nur noch teilweise nutzbar)
Jeder Screen
-Abschnitt bindet eine Grafikkarte (oder einen Anschluss auf einer Grafikkarte) an einen Monitor, indem dieser den Device
-Abschnitt und den jeweiligen Monitor
-Abschnitt für jeden der Anschlüsse referenziert. Mindestens ein Screen
-Abschnitt muss vorhanden sein, weitere bestehen für jede zusätzliche Kombination aus Grafikkarte (oder Anschluss) und Monitor auf dem Computer.
Hier ein Beispiel für einen Screen
-Abschnitt:
Section "Screen" Identifier "Default Screen" Device "NVIDIA Corporation NV34 [GeForce FX 5200]" Monitor "S19-1" DefaultDepth 16 SubSection "Display" Depth 16 Modes "1280x1024" "1024x768" EndSubSection SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" EndSubSection EndSection
In einem Screen
-Abschnitt werden diese Einträge oft verwendet:
Identifier
- Ein eindeutiger Name für diesen Screen-Abschnitt. Dieser Eintrag ist notwendig.
Device
- Gibt den eindeutigen Namen eines Device-Abschnitts an. Dieser Eintrag ist erforderlich.
Monitor
- Gibt den eindeutigen Namen eines Monitor-Abschnitts an. Dieser Eintrag ist notwendig.
DefaultDepth
- Gibt die Standard-Farbtiefe in Bits an. Im Beispiel ist 16 angegeben, was mehrere tausend Farben ermöglicht, der Standardwert. Mehrere DefaultDepth
-Einträge sind zulässig, jedoch muss mindestens einer vorhanden sein.
SubSection "Display"
- Gibt die Bildschirmmodi an, die bei einer spezifischen Farbtiefe zur Verfügung stehen. Ein Screen
- Abschnitt kann mehrere Display
-Unterabschnitte haben, es muss allerdings zumindest einen für die in DefaultDepth
angegebene Farbtiefe geben.
Option "<option-name>"
- Ein optionaler Eintrag, der weitere Parameter für diesen Screen
-Abschnitt angibt.
Der Abschnitt ServerLayout
bindet Eingabe- und Ausgabegeräte, die vom X-Server kontrolliert werden. Dieser Abschnitt muss zumindest ein Ausgabegerät und zwei Eingabegeräte (Tastatur und Maus) angeben.
Das folgende Beispiel zeigt einen typischen ServerLayout
-Abschnitt:
Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" InputDevice "Configured Touchpad" "CorePointer" EndSection
Die folgenden Einträge sind die in einem ServerLayout
-Abschnitt am häufigsten verwendeten:
Identifier
- Ein eindeutiger Name, der für die Beschreibung dieses ServerLayout
-Abschnitts verwendet wird.
Screen
- Der Name eines Screen
-Abschnitts, der mit dem X-Server verwendet wird. Es kann mehr als nur eine Screen
-Option geben. Sollte die Grafikkarte mehr als einen Anschluss haben, sind weitere Screen
-Einträge mit unterschiedlichen Identifiern für Screen
-Abschnitte vonnöten.
InputDevice
- Gibt den Namen eines InputDevice
-Abschnitts an, der mit dem X-Server verwendet wird. Es muss zumindest zwei InputDevice
-Einträge geben: einer für die Standardmaus und einer für die Standardtastatur. Die Optionen CorePointer
und CoreKeyboard
weisen darauf hin, dass es sich um primäre Eingabegeräte handelt.
Option "<option-name>"
Ein optionaler Eintrag, der weitere Parameter für diesen Abschnitt angibt. Jede der hier aufgeführten Optionen überschreibt die Optionen im Abschnitt ServerFlags
.
Es ist möglich, mehr als einen ServerLayout
-Abschnitt anzugeben. Der Server wird jedoch nur den ersten einlesen, außer es wird ein anderer ServerLayout
-Abschnitt als Befehlszeilenargument angegeben.
Der Abschnitt ServerFlags
ist optional und enthält verschiedene allgemeine Einstellungen zum X-Server. Diese Einstellungen können mit Optionen des Abschnitts ServerLayout
außer Kraft gesetzt werden.
Beispiel für einen ServerFlags
-Abschnitt:
Section "ServerFlags" Option "DontZap" "true" EndSection
Einige nützliche Optionen (siehe auch X-Server beenden):
"DontZap" "<boolean>"
- Wenn der Wert <boolean>
auf true
gesetzt wird, verhindert dies die sofortige Beendigung des X-Servers durch die Tastenkombination
Strg +
Alt +
⌫ .
"DontZoom" "<boolean>"
- Wenn der Wert <boolean>
true
ist, wird die Verwendung der Tastenkombinationen
Strg +
Alt + Ziffernblock-Plus und
Strg +
Alt + Ziffernblock-Minus unterbunden, mit denen man sich durch konfigurierte Grafikauflösungen bewegen kann.
Beim optionalen DRI
-Abschnitt (Direct Rendering Infrastructure) handelt es sich um eine Schnittstelle, die es 3D-Programmen ermöglicht, die 3D-Hardwarebeschleunigung der unterstützten Grafikkarten zu nutzen. Darüber hinaus verbessert DRI die Leistung der 2D-Hardwarebeschleunigung, sofern vom Treiber unterstützt. Dieser Abschnitt wird ignoriert, es sei denn, DRI wird im Module
-Abschnitt aktiviert.
Section "DRI" Mode 0666 EndSection
Im folgenden Beispiel eine minimale xorg.conf
Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "de" Option "XkbVariant" "nodeadkeys" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" EndSection Section "Device" Identifier "Configured Video Device" EndSection Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection
Um eine Änderung anzuwenden, muss der XServer neu gestartet werden. Hierzu reicht es aus, sich einmal ab- und wieder neu anzumelden. Freunde anderer Betriebssysteme dürfen natürlich auch wie gewohnt einen kompletten Neustart durchführen.
Beim Rücksetzen des XServer gehen sämtliche ungespeicherten Änderungen verloren! Das betrifft sowohl geöffnete Dateien als auch die Konfiguration von Anwendungen. Dieser Weg sollte daher nur Ausnahmefällen eingeschlagen werden, wenn nichts anderes mehr hilft (der Desktop quasi "eingeforen" ist).
Traditionell konnte der X-Server und damit auch die grafische Oberfläche im Notfall mit der Tastenkombination
Strg + Alt + ⌫
beendet und neu gestartet werden. Ab Version 1.6 des Xorg XServers bzw. ab Ubuntu 9.04 wurde diese Tastenkombination zugunsten von Magic SysRQ deaktiviert. Dieses erlaubt es, nun mittels der Tastenkombination
Alt + Druck + K
den XServer und alle darin laufenden Programme zu beenden und ist ein vollwertiger Ersatz.
Im folgenden wird beschrieben, wie man Strg + Alt + ⌫ wieder aktivieren kann. Bei den Desktop-Umgebungen GNOME und KDE kann man das Verhalten der Tastenkombination direkt in den Systemeinstellungen ändern:
GNOME: Unter "System -> Einstellungen -> Tastatur" im Reiter "Belegungen -> Belegungseinstellungen" die Option "Tastenkombination zum erzwungenen Beenden des X-Servers" auswählen und dort Strg + Alt + Entf aktivieren (trotzdem funktioniert Strg + Alt + ⌫ wieder).
![]() |
Tastenbelegung in KDE aktivieren |
KDE: Unter "Systemeinstellungen -> Eingabegeräte -> Tastatur" im Reiter "Erweitert" die Option "Tastenkombination zum erzwungenen Beenden des X-Servers" ändern.
Bei anderen Desktop-Umgebungen wie Xfce oder LXDE aktiviert der Befehl [3]
setxkbmap -option terminate:ctrl_alt_bksp
das alte Verhalten für die aktuelle Sitzung. Um den Befehl dauerhaft zu verankern, kann man die jeweiligen Autostart-Mechanismen dieser Desktop-Umgebungen nutzen.
Weitere Hinweise zur Wiederherstellung des alten Verhaltens der Tastenkombination finden sich im Archlinux Wiki .
Um den XServer komplett zu beendet, muss man den Displaymanager stoppen. Dazu geht man folgendermaßen vor:
Aus der jeweils verwendeten Desktop-Umgebung abmelden
Nun z.B. mit der Tastenkombination Strg + Alt + F1 auf eine virtuelle Konsole wechseln und sich dort anmelden
Nun kann der Displaymanager beendet werden:
sudo service lightdm stop
Falls ein anderer Displaymanager verwendet wird, lightdm
durch diesen ersetzen. Eine Übersicht, welche Ubuntu-Version/-Variante welchen Displaymanager einsetzt, ist im genannten Artikel zu finden.
Das System ist weiterhin benutzbar, aber eben nicht mehr über eine graphische Oberfläche. Von hier aus kann man den XServer indirekt auch wieder starten, indem man den Displaymanager neu startet:
sudo service lightdm start
xkill - kill-Befehl zum beenden von Fenstern/Anwendungen
RandR - Bildschirmausgabe an einem Rechner konfigurieren (auch mehrere Bildschirme)
Dualview - Einrichtung eines Mehrmonitorbetriebs
Xephyr - ein nested XServer
Zwei Xserver - mehrere grafische Sitzungen verschiedener Benutzer gleichzeitig laufen lassen
Multiseat - ein Rechner für mehrere (gleichzeitige) Benutzer
Archiv/XServer/Problembehebung - älterer Artikel, nur noch teilweise nutzbar