Fachbegriffe zum X-Window-System erklärt

Aus LinuxUser 02/2007

Fachbegriffe zum X-Window-System erklärt

Von Fenstern und Farben

Die 3D-Desktops laufen immer stabiler und verdrängen bereits auf vielen Rechnern die alten 2D-Oberflächen. Ein Grund mehr, sich mit den Grundlagen der grafischen Oberfläche und den neuen Techniken vertraut zu machen.

In der Umgangssprache steht der Begriff Linux meistens für ein komplettes System mit grafischer Oberfläche, zahlreichen Programmen und Tools. Strenggenommen stellt Linux aber nur den Betriebssystemkern bereit, den so genannten Kernel. Für bunte Fenster, die sich mit einer Maus bedienen lassen, sorgt das X-Window-System, auch einfach X genannt.

Wer jetzt mit Linux einsteigt, hat es leicht: Aktuelle Distributionen nehmen dem Anwender die Konfiguration der grafischen Oberfläche ab. Man darf noch entscheiden, welche Arbeitsumgebung man verwenden will, das Setup aber erfolgt weitgehend automatisch. Hinter der Bühne von KDE, Gnome oder XFCE arbeitet ein eingespieltes Team von Programmen daran, die Augen mit optischen Reizen zu kitzeln. Die Hauptrollen in diesem Team spielen der X-Server und die X-Clients.

Server und Client

X besteht aus zwei Teilen: dem X-Server und dem X-Client. Der Server versorgt einen oder mehrere X-Clients mit bestimmten Funktionen. Ein X-Client dagegen ist ein grafisches Programm, dass den X-Server braucht, um überhaupt arbeiten zu können. Firefox beispielsweise ist ebenso ein X-Client wie der Windowmanager, der für Aussehen und Verhalten von Fenstern verantwortlich zeichnet. X-Server und -Clients vollbringen sämtliche Arbeit für die Darstellung eines Desktops wie KDE.

Der X-Server kümmert sich dabei um das Wie der Darstellung, die X-Clients um das Was (Abbildung 1). Diese Trennung ermöglicht es, dass der X-Window-Client und der -Server auf zwei verschiedenen Rechnern arbeiten: Ein Rechner betreibt den X-Server, auf den die X-Clients von anderen Rechnern aus zugreifen können. Server und Client lassen sich dabei beliebig austauschen.

Abbildung 1: Wie das Programm auf den Bildschirm kommt: Über X-Server, Treiber und Grafikkarte führt der Weg letztendlich zur Bildschirmausgabe.

Abbildung 1: Wie das Programm auf den Bildschirm kommt: Über X-Server, Treiber und Grafikkarte führt der Weg letztendlich zur Bildschirmausgabe.

Der X.org-Server

Die derzeit verbreitetste X-Variante ist der Standard-X-Server X.org [2], der von der X.org-Foundation [3] entwickelt wird und momentan in der Version 7.1 vorliegt. Bei X.org handelt es sich um eine Weiterentwicklung des alten XFree86-Servers. Zur Trennung von XFree86 und X.org kam es auf Grund von internen Differenzen im Team bezüglich der XFree86-Lizenz.

Die Architektur des X.org-Server ist recht einfach zu verstehen: Der Server kommuniziert durch den Linux-Kernel mit den Ein- und Ausgabegeräten, die für die grafische Oberfläche notwendig sind. Das betrifft vor allem Maus und Tastatur, deren Eingaben dargestellt werden und Reaktionen des Systems zur Folge haben. Eine Ausnahme bildet die Grafikkarte: Sie spricht der Server in der Regel direkt an, ohne erst den Kernel zu fragen. Analog zum Kernel bringt auch X.org für die meisten Geräte Treiber mit, die man ebenfalls Module nennt. Dennoch handelt es sich bei Kernel- und X.org-Modulen um ganz unterschiedliche Komponenten, die man nicht miteinander verwechseln sollte.

Einige Grafikkartenhersteller stellen zusätzliche Treiber zur Verfügung, diese in der Regel aus einem Kernel- und einem X.org-Modul bestehen. Die bekanntesten unter ihnen sind die kommerziellen Treiber von Nvidia und ATI. Sie liefern zwar (bessere) 3D-Unterstützung und ermöglichen, sämtliche Monitorausgänge zu nutzen, enthalten aber Closed-Source-Code und verstoßen somit laut einigen Kernelentwicklern gegen die GPL. Bei Problemen mit diesen Treibern sind Linux-Benutzer auf den Support des Grafikkartenherstellers angewiesen.

Fenstermanager

Wie bereits erwähnt, kümmert sich der X-Server darum, wie etwas dargestellt wird. Das Aussehen und Verhalten der grafischen Oberfläche legt hingegen ein spezieller X-Client fest: der Windowmanager (Abbildung 2). Er verwaltet die geöffneten Fenster und sorgt dafür, dass jedem Mausklick eine bestimmte Reaktion auf dem Bildschirm folgt.

Linux ist bekannt für seine breite Palette an Fenstermanagern. Für KDE bietet KWin seine Fähigkeiten an, aktuelle Gnome-Desktops verwaltet Metacity. Ältere Fenstermanager sind Fvwm, Window Maker und Enlightenment, relativ neue Xfwm und Fluxbox [4]. Einsteiger verwechseln den Windowmanager gern mit dem Displaymanager, der den grafischen Login-Bildschirm zur Verfügung stellt.

Abbildung 2: So sehen KDE-Fenster ohne den Windowmanager KWin aus. Das Fenster lässt sich dann nicht mehr bewegen oder in der Größe ändern.

Abbildung 2: So sehen KDE-Fenster ohne den Windowmanager KWin aus. Das Fenster lässt sich dann nicht mehr bewegen oder in der Größe ändern.

Es gibt einige Funktionen, die fast jeder Window-Manager zur Verfügung stellt. Dazu gehören das Ändern der Fenstergröße oder das Starten und Beenden von grafischen Programmen. Für das Aussehen eines Fensters bietet jeder Fenstermanager eigene Möglichkeiten. Viele unterstützen Themes. Ruft man ein bestimmtes Schema auf, ändert dies mit einem Schlag das Aussehen sämtlicher Fenster. Einige Fenstermanager können nur die Farben verändern, andere modifizieren auch die Schrift oder die Form von Buttons.

Bei mehreren geöffneten Fenstern auf einem Desktop bekommt eines davon den Fokus. Der Benutzer kann immer nur in dem Fenster arbeiten, das den Fokus hat. Je nach Fenstermanager muss das nicht zwingend das oberste Fenster auf dem Bildschirm sein. Um einem Fenster den Fokus zuzuordnen, klickt der Benutzer in der Regel auf das gewünschte Fenster. Der Windowmanager holt es dann in den Vordergrund und der X-Server kümmert sich darum, dass die Grafikkarte den Bildschirm auffrischt.

Bei den meisten Fenstermanagern lässt sich der Fokus aber auch so einstellen, dass Programmfenster automatisch in den Vordergrund geholt werden, sobald sich die Maus darüber befindet. Diese Option erspart manchen Mausklick. Bei KDE finden Sie die entsprechende Option im KDE-Kontrollzentrum unter Arbeitsfläche | Fenstereigenschaften.

Toolkits

Für das Aussehen der Fenster zeichnen neben dem Fenstermanager so genannte Toolkits (GUI-Bibliotheken) verantwortlich. Sie stellen Entwicklern eine Sammlung von Schaltflächen, Schiebereglern, Knöpfen und anderen Bedienelementen bereit und helfen so, eine einheitliche Oberfläche zusammenzustellen. Am weitesten verbreitet sind die Toolkits Qt (KDE) und Gtk (Gnome), weniger bekannt sind Motif und Lesstif. Auch für Qt und Gtk gibt es sehr viele verschiedene Themes, über die sich die grafische Oberfläche nach Belieben verändern lässt.

Transparenz

Bis zur Version 6.8 von X.org war echte Transparenz (Abbildung 3) nicht möglich. Stattdessen gab es einige Tricks, um diesen Effekt vorzutäuschen: etwa, den entsprechenden Ausschnitt des Desktop-Hintergrunds ins Fenster zu kopieren. Diese Tricks brachten aber oft den Nachteil, dass Teile von Fenstern übrig blieben, obwohl diese bereits verschoben, verändert oder geschlossen waren. Aktuelle Desktops bieten volle Transparenz dank zweier Erweiterungen des X.org-Servers: Composite und Demage.

Abbildung 3: Echte Transparenz auf dem KDE-Desktop, zwei Fenster liegen übereinander.

Abbildung 3: Echte Transparenz auf dem KDE-Desktop, zwei Fenster liegen übereinander.

Traditionell zeichnen X-Clients den Fensterinhalt immer direkt in den sichtbaren Bildspeicher. Teile von älteren Programmfenstern, die eine neue Anwendung überdeckt, löscht das System aus dem Grafikspeicher. Verschiebt man ein Fenster, wird der aktuelle Bildspeicher erneut teilweise überschrieben und das Spiel geht wieder von vorne los. Der alte X-Server musste folglich sämtliche Fenster neu zeichnen, die nur teilweise verdeckt waren und wieder nach vorne geholt wurden. Echte Transparenz war schlicht deshalb nicht möglich, weil der X-Server nicht wusste, was hinter einem Fenster liegt.

Für die Lösung dieses Problems sorgt die Composite-Erweiterung [5]. Sie kümmert sich darum, dass Programme Informationen zum Fensterinhalt auch in den nicht sichtbaren Bereich des Grafikspeichers schreiben. Anschließend stellt der X-Server nach Anweisungen des Windowmanagers den Bildschirminhalt aus den gestarteten Programmen zusammen. Für die passenden Effekte sorgt ein spezieller Composite Manager (Überlagerungsverwalter).

Damit der X-Server nicht bei jeder Änderung den ganzen Desktop neu zeichnen muss, rief man die Demage-Erweiterung [5] ins Leben. Sie kümmert sich darum, dass Fenstermanager und X-Server wissen, welches Programm sich in welcher Form verändert hat. Tatsächlich werden dann nur die veränderten Bereiche neu gezeichnet: Das schont die Ressourcen und beschleunigt die Darstellung.

Composite Manager

Der Begriff Composition kommt aus der Filmtechnik und bedeutet, dass voneinander getrennt aufgenommene Filmspuren zu einem Bild verschmelzen, indem man sie übereinander legt. Der Composite Manager zeichnet dafür verantwortlich, grafische Programme zu kombinieren, bevor der X-Server diese auf dem Bildschirm zeichnet. Er verwendet dazu unterschiedliche Techniken. Für aufwändige Effekte kommt in der Regel OpenGL zu Einsatz, und Composite Manager sowie X-Server nutzen die Hardwarebeschleunigung der Grafikkarte. An dieser Stelle kommen AIGLX, XGL, Compiz und Beryl ins Spiel.

Mainstream: AIGLX

AIGLX [6] steht für Accelerated Indirect GL X. Es handelt sich dabei um eine Erweiterung des X.org-Servers, die vor allem das Fedora-Projekt unterstützt [7]. Als X-Server-Erweiterung hat AIGLX den Vorteil, sich leicht an- und abschalten zu lassen: Falls es zu Problemen mit der 3D-Darstellung kommt, arbeitet der X-Server mit AIGLX einfach über die 2D-Funktionen weiter.

AIGLX funktioniert theoretisch – wenn auch sehr langsam – auch ohne 3D-Treiber. Seit Version 7.1 bildet es einen festen Bestandteil des X.org-Servers. Benutzen Sie also zum Beispiel Ubuntu Edgy mit X.org 7.1, können Sie darauf ohne Nacharbeit einen Composite-Fenstermanager benutzen.

Das X-Window-System erlaubt OpenGL-Programmen den Zugang zur Grafikkarte auf zwei Wegen: einem direkten und einem indirekten. Der direkte Weg bedeutet, dass die OpenGL-Anwendung direkt mit der Grafikkarte kommuniziert, zum Beispiel über das Framebuffer Device[8]. AIGLX nutzt den indirekten Weg über den X-Server. Er nimmt die Anweisungen zum Zeichnen entgegen und leitet die Information an die Grafikkarte weiter. Beim indirekten Weg hat der X-Server die Möglichkeit, in die OpenGL-Befehle einzugreifen, was er beim direkten Weg nicht kann.

Die Konkurrenz: XGL

Das Gegenstück zu AIGLX bildet das XGL-Projekt von Novell [9]. Anstatt X.org um die 3D-Fähigkeiten zu erweitern, entwickelte Novell einen eigenen X-Server. Er erfüllt zwar prinzipiell die gleichen Aufgaben wie X.org, ergänzt dieses aber nicht, sondern ersetzt es [10]. XGL startet in einem X-Server ein Fenster, das per OpenGL unmittelbar mit der Grafikkarte kommuniziert. Xgl benutzt somit den direkten Weg und ist deshalb unbedingt auf eine funktionierende 3D-Beschleunigung angewiesen.

Allerdings funktioniert XGL nicht ganz unabhängig von anderen X-Servern. Für die direkte Kommunikation mit der Grafikkarte zeichnet ein Programm namens Xglx verantwortlich. Es benötigt einen aktiven X-Server, um mit OpenGL arbeiten zu können. Einen X-Server der ohne zusätzliche Hilfe über OpenGL auf die Grafikkarte zugreifen kann, hat das Projekt Xegl zum Ziel [11]. Es ist bisher allerdings nicht über den Status eines Konzepts herausgekommen.

Compiz und Beryl

Die Entwicklung von XGL ist stark mit Compiz verbunden, einem Composite- und Fenstermanager, der ebenfalls von Novell stammt. Da Compiz beide Aufgaben angeht, bezeichnet man es auch als “Compositing Window Manager” [12]. Es kümmert sich nicht nur um die Effekte, sondern auch um Titelleisten und Funktionen wie das Schließen eines Fensters. Compiz lässt sich durch Plugins beliebig erweitern: Jeder Effekt, wie Miniaturansichten der geöffneten Fenster oder der berühmte 3D-Würfel, entspricht einem Compiz-Plugin.

Abbildung 4: Über den Compiz-Manager (hier ein Ausschnitt des Fensters) lassen sich sämtliche Plugins aktivieren und verwalten.

Abbildung 4: Über den Compiz-Manager (hier ein Ausschnitt des Fensters) lassen sich sämtliche Plugins aktivieren und verwalten.

Novell entwickelte Compiz und XGL eine Zeit lang hinter geschlossenen Türen. Dies sahen andere Open-Source-Programmierer nicht gerne. Nachdem Novell den Source-Code veröffentlichte, machten sich deshalb einige Entwickler daran, auf der Grundlage von Compiz einen neuen Compositing Window Manager auf die Beine zu stellen: das Resultat heißt Beryl [13]. Der neue Composite-Manager hat Compiz inzwischen in puncto Feature-Vielfalt und Geschwindigkeit der Entwicklung hinter sich gelassen. Details zu beiden Projekten lesen Sie in den folgenden zwei Artikeln.

Fazit

Für die grafische Ausgabe unter Linux arbeiten verschiedene Programme zusammen. Die Kernkomponente stellt der X-Server, auf den die X-Clients zugreifen. Verblüffende Effekte zeichnen die X-Clients mit Hilfe spezieller Composite-Manager an den Bildschirm. Diese benutzen dazu die OpenGL-Funktion der Grafikkarte.

Während der X-Server zurzeit noch hauptsächlich 2D-Aufgaben wahrnimmt, arbeiten einige Projekte auch an einem X-Window-System, das komplett auf OpenGL basiert. Solange Linux jedoch nicht bei allen Grafikkarten den 3D-Modus unterstützt, wird sich ein solches Projekt jedoch kaum durchsetzen.

Glossar

X-Window-System

Eine Sammlung von Programmen und Standards [1], um grafische Benutzeroberflächen darstellen zu können. Dabei lassen sich einzelne Programme jederzeit austauschen, weil Standards und Protokolle festlegen, was die Programme können müssen.

Windowmanager

Windowmanager, auch Fenstermanager genannt, kümmern sich um das Aussehen und das Verhalten von Fenstern. Sie stellen in der Regel Rahmen und Titelleiste für ein Fenster bereit und können oft auch weitere Design-Einstellungen am Desktop vornehmen.

Displaymanager

Displaymanager stellen eine grafische Anmeldung zur Verfügung, die meist direkt nach dem Systemstart angezeigt wird. Nach der Angabe von Benutzername und Passwort startet der Displaymanager eine neue X-Sitzung. Bekannte Displaymanager sind Xdm (generisch), Kdm (KDE) und Gdm (Gnome).

GUI

Graphical User Interface, die grafische Benutzerschnittstelle.

Sichtbarer Bildspeicher

Der sichtbare Bildspeicher ist ein Teil des Speichers der Grafikkarte, der ein genaues Abbild des Bildschirminhalts enthält.

OpenGL

Open Graphics Library, eine plattformunabhängige Programmierschnittstelle für 3D-Computergrafik. Der Standard beschreibt rund 250 Befehle, für deren Umsetzung in Hardwarebefehle der Grafikkartentreiber sorgt. Dabei muss er gegebenenfalls nicht vorhandene Funktionen durch die CPU emulieren. Damit X-Window-Systeme auf OpenGL zugreifen können, gibt es die X-Server-Erweiterung GLX (OpenGL Extension).

Framebuffer Device

Kurz auch: fbdev. Ein Linux-Kernel-Treiber für Grafikkarten, der Programmen direkten Zugriff auf die Grafikkarte ohne den Umweg über den X-Server ermöglicht. Aktuelle Distributionen benutzen diese Funktion, um schon beim Hochfahren des Systems Grafiken anzuzeigen.

Infos

[1] X-Window-System (Wikipedia): http://de.wikipedia.org/wiki/X-Window-System

[2] X.org-Server (Wikipedia): http://de.wikipedia.org/wiki/X.Org-Server

[3] X.org-Foundation: http://www.x.org

[4] Windowmanager (Wikipedia): http://de.wikipedia.org/wiki/Windowmanager

[5] X.org 6.8: René Rebe, “Ein neuer Start”, Linux-Magazin, 11/2004, S. 84

[6] AIGLX (Wikipedia): http://de.wikipedia.org/wiki/AIGLX

[7] AIGLX-Projekt: http://fedoraproject.org/wiki/RenderingProject/aiglx

[8] Framebuffer: D. Schön, B. Kuhn, “Klein ist fein”, Linux-Magazin 10/2000, http://www.linux-magazin.de/Artikel/ausgabe/2000/10/Framebuffer/framebuffer.html

[9] Videos von Novells XGL: http://www.novell.com/products/desktop/features/xgl/

[10] XGL bei Open Suse: http://de.opensuse.org/Xgl

[11] Xegl: http://www.freedesktop.org/wiki/Xegl

[12] Compiz: http://www.go-compiz.org

[13] Beryl: http://beryl-project.org

LinuxUser 02/2007 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben