XWindow-System, X11

Copyright © Shutterstock/Jodennitin
Was ist XWindow-System, X11?
Das XWindow-System (Auch X11 oder noch weiter abgekürzt auch als X geläufig) ist ein Fenstersystem für Bitmap-Anzeigen, das auf UNIX-ähnlichen Computerbetriebssystemen üblich und weit verbreitet ist. X stellt das grundlegende Framework für eine GUI-Umgebung (Grafische Benutzeroberfläche) bereit: Das Zeichnen und Verschieben von Fenstern auf dem Anzeigegerät und das Interagieren mit dem System mittels einer Maus und einer Tastatur. Dabei legt X die Benutzeroberfläche nicht fest – dies wird von den einzelnen Programmen gehandhabt. Aus diesem Grund unterscheidet sich die visuelle Gestaltung von X-basierten Umgebungen stark. Verschiedene Programme können radikal unterschiedliche Benutzerschnittstellen aufweisen.
Das XWindow-System entstand 1984 am Massachusetts Institute of Technology (MIT), einer amerikanischen Universität. Das Protokoll liegt offenkundig seit September 1987 in der Version 11 vor (daher “X11”). Die X.Org Foundation leitet das X-Projekt nebst der aktuellen Referenzimplementierung, X.Org Server, erhältlich als freie und Open-Source-Software unter der MIT-Lizenz und ähnlichen permissiven Lizenzen.
Konzepte und Funktionsweisen von X11
Das XWindow-System ist ein von der zugrunde liegenden Architektur unabhängiges System für die Unterstützung entfernter grafischer Benutzerschnittstellen(UI) und Eingabegeräte. Jede Person, die ein Netzwerkterminal verwendet, kann über jedes beliebige Benutzereingabegerät mit dem Display interagieren. In seiner Standard-Variante handelt es sich um eine vollständige, wenn auch einfache Anzeige- und Schnittstellenlösung, die ein Standard-Toolkit und den entsprechenden Protokollstapel zum Erstellen von grafischen Benutzerschnittstellen auf den meisten Unix-ähnlichen Betriebssystemen und OpenVMS liefert und auf viele andere moderne Allzweckbetriebssysteme portiert wurde.
X11 stellt das Grundgerüst oder die Grundelemente zum Erstellen solcher GUI-Umgebungen bereit: das Zeichnen und Bewegen von Fenstern auf dem Bildschirm und das Interagieren mit einer Maus, einer Tastatur oder einem Touchscreen. Individuelle Client-Programme legen dabei das genaue Erscheinungsbild ihrer UI fest, das Framework verzichtet hier auf feste Vorgaben. Programme können die grafischen Fähigkeiten von X gegebenenfalls auch ohne Benutzeroberfläche verwenden. Daher unterscheidet sich die visuelle Gestaltung von X-basierten Umgebungen stark.
Im Gegensatz zu den meisten früheren Anzeigeprotokollen wurde X speziell für die Verwendung über Netzwerkverbindungen und nicht primär für ein integriertes oder direkt angeschlossenes Anzeigegerät entwickelt. Das XWindow-System bietet Netzwerktransparenz, was bedeutet, dass ein X-Programm, das auf einem Computer irgendwo in einem Netzwerk (wie zum Beispiel auch dem Internet) läuft, seine Benutzerschnittstelle auf einem X11-Server anzeigen kann, der auf einem anderen Computer im Netzwerk läuft. Der X-Server ist normalerweise der Anbieter von Grafikressourcen und Tastatur- / Mausereignissen für X11-Clients, was bedeutet, dass der X-Server normalerweise auf dem Computer vor einem menschlichen Benutzer läuft, während die X11-Client-Anwendungen irgendwo im Netzwerk laufen und mit dem Computer des Benutzers kommunizieren, um das Rendern von Grafikinhalt anzufordern und Ereignisse von Eingabegeräten einschließlich Tastaturen und Mäusen zu empfangen.
Die Tatsache, dass der Ausdruck “Server” auf die Software vor einem Benutzer angewendet wird, überrascht häufig Benutzer, die daran gewöhnt sind, dass ihre Programme Clients für Dienste auf entfernten Computern sind. Anstelle einer entfernten Datenbank, die die Ressource für eine lokale Anwendung darstellt, werden beim XWindow-System die graphischen Anzeige- und Eingabegeräte des Benutzers zu Ressourcen, die vom lokalen X11-Server sowohl lokalen als auch entfernt gehosteten X-Client-Programmen zur Verfügung gestellt werden, die auf die Grafik- und Eingabegeräte des Benutzers zurückgreifen müssen, um mit dem Benutzer zu kommunizieren.
Das Netzwerkprotokoll im XWindow-System basiert auf X11-Befehlsprimitiven. Dieser Ansatz ermöglicht sowohl 2D- als auch (durch Erweiterungen wie GLX) 3D-Operationen durch eine X11-Client-Anwendung, die möglicherweise auf einem anderen Computer ausgeführt wird, um auf dem X11-Server-Display noch vollständig beschleunigt zu werden. Zum Beispiel könnten im klassischen OpenGL (vor Version 3.0) Anzeigelisten mit einer großen Anzahl von Objekten erstellt und vollständig auf dem X11-Server von einem Remote-X11-Client-Programm gespeichert werden. Danach kann dann jedes Objekt gerendert werden, indem man eine einzelne glCallList über die Netzwerk sendet. Das XWindow-System bietet von Haus aus keine native Unterstützung für Audio. Es gibt jedoch mehrere Projekte, die diese Nische füllen, einige von ihnen unterstützen gleichzeitig auch eine transparente Netzwerkunterstützung.
Softwarearchitektur bei der Verwendung von X11
Im einfachsten Fall kann man sich die Softwarearchitektur beim XWindow-System folgendermaßen vorstellen: Der X-Server empfängt Eingaben von einer lokalen Tastatur und Maus und zeigt diese auf einem Bildschirm an. Ein Webbrowser und ein Terminalemulator werden auf dem Arbeitsplatzrechner des Benutzers ausgeführt und ein weiterer Terminalemulator wird auf einem Remotecomputer ausgeführt, dabei jedoch vom Computer des Benutzers aus gesteuert und überwacht. Das XWindow-System verwendet ein Client-Server-Modell: Ein X11-Server kommuniziert mit verschiedenen Client-Programmen. Der Server akzeptiert Anfragen zur grafischen Ausgabe (Fenster) und sendet Benutzereingaben (von Tastatur, Maus oder Touchscreen) zurück. Der Server in einem XWindow-System kann dabei beispielsweise folgende Rollen einnehmen:
- eine Anwendung, die in einem Fenster eines anderen Anzeigesystems angezeigt wird
- ein Systemprogramm, das den Videoausgang eines PCs steuert
- ein dediziertes Hardware-Bauteil
Diese Client-Server-Terminologie – das Endgerät des Benutzers ist der Server und die Anwendungen die Clients – werden von neuen XWindow-System-Benutzern oft verwechselt, weil diese Begriffe intuitiv mit der gegenteiligen Bedeutung in Verbindung gebracht werden. X nimmt jedoch die Perspektive der Anwendung ein und nicht die des Endbenutzers: Das XWindow-System stellt Anwendungen Anwendungen für die Anzeige die I/O-Funktionalität bereit, also ist es ein Server; Anwendungen nutzen diese Dienste, dementsprechend sind sie Clients. Das Kommunikationsprotokoll zwischen Server und Client arbeitet netzwerktransparent: Der Client und der Server laufen möglicherweise auf derselben Maschine oder auf unterschiedlichen Maschinen, möglicherweise auch auf unterschiedlichen Architekturen und Betriebssystemen. Ein Client und ein Server können sogar sicher über das Internet kommunizieren, indem die Verbindung über eine verschlüsselte Netzwerksitzung getunnelt wird.
Ein X11-Client selbst kann einen X-Server emulieren, indem er anderen Clients Anzeigedienste bereitstellt. Dies wird als “X nesting” bezeichnet. Open-Source-Clients wie Xnest und Xephyr unterstützen diese X-Verschachtelung. Um eine X11-Client-Anwendung auf einem Remote-Computer zu verwenden, kann der Benutzer Folgendes tun:
- Auf dem lokalen Computer ein Terminalfenster öffnen
- ssh mit dem Argument X forwarding verwenden, um eine Verbindung mit dem Remotecomputer herzustellen
- Request des lokalen Anzeige- / Eingabedienstes (z.B. Export DISPLAY = [Maschine des Benutzers]: 0, wenn kein SSH mit aktivierter X-Weiterleitung verwendet wird)
Die Remote-X-Client-Anwendung stellt dann eine Verbindung zum lokalen X-Server des Benutzers her und stellt dem Benutzer Anzeige und Eingabe bereit. Alternativ kann der lokale Computer ein kleines Programm ausführen, das eine Verbindung mit dem Remotecomputer herstellt und die Clientanwendung startet.
Tipp
Wenn Sie noch Fragen bezüglich eines Online Marketing Themas haben, dann können Sie gerne unseren Glossar besuchen und sich über das Thema informieren, wo Sie noch speziell Fragen haben.
Sie haben noch Fragen?