X Window System
Das X Window System / X (auch: X Version 11, X11) ist das Open Source-Standard-Grafiksystem von Unix und die Grundlage fast jeder grafischen Darstellung unter Linux. Es stellt die grafische Oberfläche bereit, ist für die Darstellung von Fenstern zuständig, steuert die Maus und Tastatur, und ermöglicht bei entsprechender Grafikkarte auch die 3D-Unterstützung. Ausnahmen sind vor allem die Konsole und die SVGAlib. Für komfortables Arbeiten wird zusätzlich eine strukturierende Komponente wie ein Fenstermanager oder eine grafische Arbeitsumgebung eingesetzt. Alle modernen Linux-Distributionen installieren zusammen mit X auch einen Displaymanager samt passender Konfiguration.
X ist eine Client/Server-Anwendung:
- Der X-Server ist das Programm, das direkt mit dem Benutzer interagiert. Er zeichnet Widgets (Grafikelemente) auf den Bildschirm und nimmt Eingaben entgegen. Der X-Server ist für alle gängigen Plattformen (auch Windows und Macintosh) erhältlich. Beispiel: Cygwin
- Der X-Client benutzt diesen X-Server; er zeichnet nicht selbst auf den Bildschirm (greift also meist nicht direkt auf die Grafikhardware zu), sondern weist den X-Server an, Grafikaktionen durchzuführen. Der X-Client läuft auf jeder Architektur, die das X-Protokoll unterstützt. Typische X-Clients sind Textverarbeitungsprogramme, Webbrowser oder Terminalemulationen.
Wenn Client und Server getrennt sind, steht der X-Server fast immer auf dem Schreibtisch des Anwenders. Das trifft auch für die typischen Thin Clients unter Linux zu, die unter anderem einen vollständigen X-Server enthalten. Wo sich der X-Client befindet ist dabei ziemlich nebensächlich. Sofern eine ausreichend schnelle Netzwerkverbindung besteht, kann er an einem beliebigen Ort laufen - meist befindet er sich allerdings auf dem selben Rechner wie der X-Server.
Auf einem Rechner können auch mehrere X-Server gestartet werden. Mit seinen virtuellen Terminals kann Linux mehrere X-Server gleichzeitig bedienen. Spezielle X-Software arbeitet sogar ohne Bildschirm und Tastatur, was für Terminalserver wichtig ist. Da Client und Server unabhängig voneinander agieren und nicht einmal auf demselben Computer laufen müssen, muss den Clients mitgeteilt werden, auf welchem Display sie ihre Ausgabe darstellen sollen. Dazu dient die Variable DISPLAY. Sie enthält einen optionalen Hostnamen, eine Displaynummer und eine optionale Screen-Nummer. Die Screen-Nummer ist normalerweise nur für Xinerama-Umgebungen interessant, bei denen ein X-Server mehrere Bildschirme bedient. Ist der Hostname in "DISPLAY" nicht angegeben, kontaktieren die Clients den lokalen Rechner. Dabei findet die Kommunikation nicht über TCP-Ports (wie bei X11-Netzwerkverbindungen), sondern über Unix-Sockets statt.
Beim X-Einsatz übers Netzwerk sind zwei Dinge zu bedenken:
- Nicht jeder Server erlaubt Verbindungen von jedem beliebigen Client - das wäre ein Sicherheitsrisiko.
- Datensträme sind in der Voreinstellung unverschlüsselt. Angreifer können deshalb problemlos in den Protokollen herumschnüffeln sowie Session Hijacking durchführen, also sich in fremde Sitzungen einklinken und diese übernehmen.
Fast jeder X-Server setzt heute schon per Voreinstellung eine Zugriffskontrolle ein. Auf Linux stehen zwei Alternativen zur Verfügung:
- xauth benutzt kryptografische Cookies und bietet damit eine sehr feine Steuerung.
- xhost erlaubt dedizierten Rechnern den Zugriff und ist damit nicht übermässig sicher.
Diese Schutzmechanismen sind wichtig, weil X-Clients über verschiedene Protokolle sehr weit reichenden Einfluss auf den Server und auf andere Clients ausüben. So ist z. B. das Mitlesen von Tastatureingaben kein grosses Problem. Zugriff auf den eigenen X-Server sollten deshalb nur vertrauenswürdige Programme haben.
Geschichte
X11 entstand 1984 am MIT als Teil des Projekts "Athena". Sein Netzwerkprotokoll basiert auf TCP/IP und ist darum unabhängig von der eingesetzten hardware. X11R6.4 (X version 11 revision 6.4) ist der aktuelle Industriestandard für grafische Oberflächen unter Unix. X version 11 datiert vom September 1987!
Datum | Version |
---|---|
1984.06 | (erste Version) |
1987.09 | X11 |
1994 | X11R6 |
2005.12 | X11R7.0 |
Konfiguration
Im Verzeichnis "/etc/X11" finden sich wichtige Konfigurationsdateien des X-Servers:
- Die Datei "xorg.conf" (oder je nach X-Server-Variante und eingesetzter Distribution "XF86Config-4") enthält die grundsätzlichen Einstellungen zum X-Server, u. a. die Konfiguration von Tastatur, Maus und Bildschirm. Zum automatischen Erstellen dieser Datei dienen z. B. die Programme "xf86cfg", "xf86config" oder (bei SUSE Linux) "Sax" bzw. "Sax2".
- Die Datei "Xmodmap" ändert die Tastenbelegung unter X. Mit dieser Datei und dem Befehl xmodmap kann theoretisch die gesamte Tastaturbelegung geändert werden.
Da die Konfigurationsdatei "xorg.conf" auch für den Bildschirm spezifisch ist, sollte vor einem Wechsel desselbigen ein alternativer Zugangsweg zum Rechner offengelassen werden (Netzwerk oder Konsole), falls die Optionen falsch sind und der X-Server nicht startet.
Startdateien
- ".xinitrc" wird benötigt, wenn xinit oder startx von einer Konsole aufgerufen werden.
- ".xsession" wird von XDM-basierten Systemen verwendet, die X gleich während des Bootvorgangs starten.
- ".Xdefaults"
Verwendung
- Um aus der schwarzweissen Konsole auf eine farbige Oberfläche zu wechseln, kann mit "Ctrl Esc" die KDE-Systemüberwachung gestartet und nach unten zum Buchstaben X gescrollt werden.
- Unter Linux kann mit "Ctrl Alt Backspace" der X-Server beendet werden. Dies sollte jedoch nur bei schwerwiegenden Problemen mit der grafischen Oberfläche getan werden, wenn eine Abmeldung über das Hauptmenü nicht mehr möglich ist. Alle auf der grafischen Oberfläche laufenden Programme werden
dann ohne Rückfrage beendet.
Einfaches Kiosksystem
Der Einsatz eines puren X-Servers mit einem einzelnen X-Client bietet sich auf einem Kiosksystem an, bei dem nur eine einzige Anwendung startet (z. B. in Internetcafés). Zuerst wird dabei der X-Server gestartet, anschliessend der oder die gewünschten Clients. Im folgenden Aufruf gibt die Option ":3" an, dass der Server auf dem vierten (die Zählung beginnt bei 0) lokalen Display (nicht dem vierten Bildschirm) starten soll.
$ X :3 < /dev/null > /dev/null 2>&1 & $ exec firefox --display :3 &
Das Programm xinit vereinfacht diesen Aufruf, indem es sich selbt um den Start des X-Servers kümmert. Folgende Zeile startet den X-Server und in seinem Gefolge ein xterm, falls nicht die Datei "~/.xinitrc" etwas anderes vorsieht.
$ xinit -fn 9x13 -- :3 < /dev/null 2>&1 &
Starten einer X-Session mit TWM und Firefox.
$ X :3 < /dev/null > /dev/null 2>&1 & $ twm -display :3 & $ exec firefox --display :3 &
Manueller Start von X-Programmen
Nach dem Login über einen Displaymanager sind alle Umgebungsvariablen passend gesetzt. Zum manuellen Starten eines X-Programms muss möglicherweise die entsprechende Variable gesetzt werden. Folgender Aufruf startet den Browser Firefox auf dem lokalen Rechner; die Oberfläche von Firefox zeigt dabei der X-Server auf dem Rechner "abc" an.
$ export DISPLAY=abc:0 $ firefox &
Weblinks
- X.org (X.org)