Das X Window System verwendet eine Client-Server-Architektur. Der X-Server wird auf dem Computer ausgeführt, auf dem das Display angezeigt wird (Monitore + Eingabegeräte), während X-Clients auf jedem anderen Computer ausgeführt werden können und über das X-Protokoll eine Verbindung zum X-Server herstellen können (nicht direkt, sondern mithilfe einer Bibliothek, z. B. Xlib oder das modernere nicht blockierende ereignisgesteuerte XCB). Das X-Protokoll ist erweiterbar und hat viele Erweiterungen (siehe xdpyinfo(1)
).
Der X-Server führt nur Operationen auf niedriger Ebene aus, z. B. das Erstellen und Zerstören von Fenstern, Zeichnungsoperationen (heutzutage werden die meisten Zeichen auf dem Client ausgeführt und als Bild an den Server gesendet), Senden von Ereignissen an Fenster usw. Sie können sehen, wie wenig Ein X-Server wird ausgeführt X :1 &
(verwenden Sie eine beliebige Nummer, die noch nicht von einem anderen X-Server verwendet wurde) oder Xephyr :1 &
(Xephyr führt einen auf Ihrem aktuellen X-Server eingebetteten X-Server aus) und anschließend ausgeführt xterm -display :1 &
und wechselt auf den neuen X-Server (möglicherweise müssen Sie die X-Autorisierung einrichten) mit xauth(1)
).
Wie Sie sehen, macht der X-Server sehr wenig, zeichnet keine Titelleisten, minimiert / iconifiziert keine Fenster, verwaltet keine Fensterplatzierung ... Natürlich können Sie die Fensterplatzierung auch manuell steuern, indem Sie einen Befehl ausführen wie xterm -geometry -0-0
, aber Sie werden in der Regel einen speziellen X-Client haben, der die obigen Dinge tut. Dieser Client wird als Fenstermanager bezeichnet . Es kann immer nur ein Fenstermanager aktiv sein. Wenn Sie immer noch den blanken X - Server der vorherigen Befehle geöffnet haben, können Sie versuchen , einen Window - Manager auf, um sie auszuführen, wie twm
, metacity
, kwin
, compiz
, larswm
, pawm
, ...
Wie bereits erwähnt, führt X nur Operationen auf niedriger Ebene aus und bietet keine Konzepte auf höherer Ebene wie Drucktasten, Menüs, Symbolleisten usw. Diese werden von Bibliotheken bereitgestellt, die als Toolkits bezeichnet werden , z. B. Xaw, GTK, Qt, FLTK usw.
Desktop-Umgebungen sind Sammlungen von Programmen, die eine einheitliche Benutzererfahrung bieten sollen. In Desktop-Umgebungen werden daher in der Regel Panels, Anwendungsstarter, Taskleisten, Control Panels und Konfigurationsinfrastruktur bereitgestellt (zum Speichern von Einstellungen). Einige bekannte Desktop-Umgebungen sind KDE (mit dem Qt-Toolkit erstellt), Gnome (mit GTK), Enlightenment (mit eigenen Toolkit-Bibliotheken), ...
Einige moderne Desktop-Effekte lassen sich am besten mit 3D-Hardware erzielen. Es erscheint also eine neue Komponente, der Composite Manager . Eine X-Erweiterung, die XComposite-Erweiterung, sendet Fensterinhalte an den Composite-Manager. Der Composite Manager konvertiert diese Inhalte in Texturen und verwendet 3D-Hardware über OpenGL, um sie auf vielfältige Weise zu komponieren (Alpha-Blending, 3D-Projektionen, ...).
Vor nicht allzu langer Zeit sprach der X-Server direkt mit Hardwaregeräten. Ein wesentlicher Teil dieser Geräteverwaltung wurde auf den Betriebssystemkern verlagert: DRI (ermöglicht den Zugriff von X- und Direct-Rendering-Clients auf 3D-Hardware ), evdev (einheitliche Schnittstelle für die Verwaltung von Eingabegeräten), KMS (Verschieben der Grafikmoduseinstellung auf den Kernel). , GEM / TTM (Texturspeicherverwaltung).
Angesichts der Komplexität der Gerätehandhabung, die jetzt zum größten Teil außerhalb von X stattfindet, wurde es einfacher, mit vereinfachten Fenstersystemen zu experimentieren. Wayland ist ein Fenstersystem, das auf dem Composite-Manager-Konzept basiert, dh das Fenstersystem ist der Composite-Manager. Wayland nutzt das Device-Handling, das aus X herausgezogen ist, und rendert mit OpenGL.
Unity ist eine Desktop-Umgebung mit einer für Netbooks geeigneten Benutzeroberfläche.