Linux-Kurs: Grafische Oberfläche

Wer unter die Oberfläche dringt, tut es auf eigene Gefahr.Oscar Wilde (1854 - 1900)

Geschichtliches

Mitte der 80er Jahre wurde in einer Kooperation zwischen dem MIT, IBM und der Firma DEC das X-Window-System entwickelt, dessen erste Version bereits im Juni 1984 freigegeben wurde. Im September 1987 wurde die Version X11 freigegeben. Zu dieser Zeit wurde auch auf Betreiben des MIT das X Consortium ins Leben gerufen. Von diesem wurden im Jahresrhythmus neue Versionen des X-Window-Systemes erstellt. Die letzte große veröffentlichte Version war die X11R6 im Jahre 1994.
Danach übernahm "The Open Group" die Standardisierung die Weiterentwicklung des Systems.
Gleichzeitig wurde ide freie X-Implementierung XFree86 wegen ihrer außerordentlichen Beliebtheit praktisch zum Standard der X-Implementierung.

Ende 2003 gab es personelle Streitereien innerhalb des XFree86-Entwicklerteams, die zum Ende des Jahres in der Auflösung des Kernteams mündeten. Bereits nach der Auflösung wendeten sich viele Entwickler der X.Org-Foundation an. Diese wurde in ein Open-Source-Projekt umgewandelt. Im Januar und Februar 2004 kam es dann zu schwerwiegenden Lizenzänderungen bei XFree86. Viele sahen infolgedessen XFree86 nicht mehr als ein freies Software-Projekt an. Viele Distributionen (SuSE ab 9.2, Fedora Core ab 2, Mandriva ab 10.1 u.a.) schlossen sich der Meinung an, dass die neue Lizenz inkompatibel mit der GPL sei und benutzten fortan den alternativen X.Org X-Server (X.Org-Server) als Standard.

Funktionsweise

oder wie funktioniert das X-Window-System

Zunächst einmal ist es wichtig für das weitere Verständnis festzuhalten, dass X-Window-System Client/Server basiert ist. Der X-Server (also XFree86-Server oder X.Org-Server) kümmert sich um die Steuerung der benötigten Geräte, also z.B. Maus- und Tastatureingabe und die Bildschirmausgabe des Rechners. Zu diesem Zweck kommuniziert er mit dem Kernel, der die vom theoretischen Konzept her die weiteren Details erledigen soll. Allerdings greift der X-Server manchmal auch selbst direkt auf Tastaturen und Mäuse zu. Eine generelle Ausnahme bilden die Grafikkarten, die vom X-Server immer direkt unter Umgehung des Kernels angesprochen werden.

Client, Server, Protokoll

oder wie funktioniert das X-Window-System

Wie bereits im vorigen Abschnitt gesagt, ist es die Aufgabe des X-Servers sich um die Steuerung der Ein- und Ausgabegeräte zu kümmern.
Ein X-Client ist ein Anwendungsprogramm, das die grafischen Ein- und Ausgabedienstes des X-Servers in Anspruch nimmt. Ein solches Programm kann sowohl auf einem Remote-System als auch lokal gestartet werden. Will ein X11-Anwendungsprogramm (also der X-Client) Ausgaben auf den Bildschirm bringen, - was wohl im Wesen einer X11-Anwendung liegt, - so schickt es diese als Anforderung an den X-Server, der sich dann um die konkrete Ausgabe kümmert. Umgekehrt sendet der X-Server Tastatur- oder Mauseingaben an den Client zur Weiterverarbeitung weiter. Zur Kommunikation benutzen X-Client und X-Server ein quelloffenes X-Protokoll.

Zugriffskontrolle

Vertrauen ist gut, Kontrolle ist besser

Die Zugriffskontrolle erfolgt durch den X-Server und wird durch das Programm xhost gesteuert. Um einen anderen Host den Zugriff auf den X-Server zu erlauben bzw. zu untersagen, verwendet man ein xhost-Kommando mit einem + (fürs erlauben) und einem - (fürs verbieten) vor dem Hostnamen. Also zum Beispiel xhost +192.168.178.121

Bei SSH Verbindungen sieht die Sachlage etwas anders aus: Der einzige Host, der Zugriff auf den X-Server hat, ist der Localhost.

Konfiguration

Das X-Window-System geschieht entweder mit xorgconfig, falls X.Org installiert ist oder mit xf86config. Die Bedienung dieser beiden Programme ist nahezu identisch.
Konfiguriert wird in folgender Reihenfolge:

  • Die Maus
  • Die Tastatur
  • Der Monitor
  • Die Grafikkarte
  • Die Farbtiefe

Gespeichert wird die Konfiguration in der Datei xorg.conf (bzw. XF86Config) in /etc/X11. Will man die Oberfläche testen, kann man X11 mit dem Programm startx starten.
Die Datei xorg.conf (bzw. XF86Config) ist in verschiedene Sektionen (sections) unterteilt, die jeweils durch "Section" <Name> und "EndSection" geklammert sind. Untersektionen werden mit "SubSection" und "EndSubSection" geklammert.

Die einzelnen Sektionen:

  • Section "ServerLayout"
    Diese Sektion bindet alle verwendeten Ein- und Ausgabegeräte, - also welche Maus, welcher Monitor, welche Tastatur und Bildschirmanzeige, - die in einer Sitzung benutzt werden zusammen.
  • Section "Files"
    In dieser Rubrik können X11 Pfade mitgeteilt werden, in denen sich zum Beispiel Fonts, Module oder anderes befinden.
  • Section "Module"
    Module, also Erweiterungen der eigentlichen Grundsoftware, können während des Startvorgangs statisch geladen werden. Durch SubSection-Optionen können Optionen noch vorkonfiguriert werden.
  • Section "ServerFlags" Diese Sektion dient dazu einige globale X.Org-Server-Optionen zu spezifizieren. Beschreibung der Optionen im Detail
  • Section "InputDevice" Diese Sektion behandelt die Eingabegeräte Maus und Tastatur. Es können mehrere Tastaturen und Mäuse gleichzeitig konfiguriert werden, aber für jedes Gerät muss eine eigene InputSection erstellt werden.
  • Section "Monitor" Wie der Name sagt geht es hier um die Konfiguration eines Monitors. Es können mehrere Monitore spezifiziert werden. In einer einzelnen Monitor-Spezifikation ist nur der Eintrag "Identifier" ein Pflichteintrag. Ansonsten wird falls nötig dort auch die horizontal (HorizSync) und die vertikale (VerRefresh) Frequenz des Monitors eingestellt.
  • Section "Device" In dieser Rubrik erfolgt die Konfiguration der Grafikkarte. Es können wie auch bei den Monitoren, mehrere Grafikkarten spezifiziert werden. Jede Karte in einer eigenen Sektion. Ein Treiber der immer laufen sollte ist der VGA.
  • Section "Screen" Auch die Screen-Sektion kann mehrmals vorkommen. Allerdings muss wenigstens eine für die Bildschirmeinstellung existieren, die man benutzen will. Ein "Screen" stellt die Bindung (Verknüpfung) zwischen einer Grafikkarte (Device section) und einem Monitor (Monitor section) dar. Eine Screen-Sektion wird als aktiv betrachtet, wenn sie durch eine aktive ServerLayout-Sektion referenziert wird oder durch eine -screen Kommandozeile. Wenn keine der beiden vorliegen, wird die erste in der Datei gefundene Screen-Section zur aktiven Screen-Section.

Aus Kompitibilitäsgründen werden immer noch die Sektionen "Section Keyboard" und "Section Pointer" erkannt. Allerdings sollte man dafür dennoch "Section InputDevice" benutzen.

Weiterführende Literatur und Weblinks

  • Sofern man des Englischen kundig ist, findet man erstklassige Informationen über X.Org direkt auf der Webseite der X.Org Foundation, die in Form eines Wikis angelegt ist.
  • Weitere Infos zum XFree86-Projekt findet man unter The XFree86 Project, Inc.