Zum Inhalt springen

„X Window System“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][Sichtung ausstehend]
Inhalt gelöscht Inhalt hinzugefügt
Spawn Avatar (Diskussion | Beiträge)
K externen Link entfernt
 
(440 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
{{Infobox Software
{| border="0" cellpadding="2" cellspacing="1" align="right" style="margin-left:1em; background:#e2e2e2;"
| Logo = [[Datei:X11.svg|50px|Logo des X Window Systems]]
|- bgcolor="#f8f8ff" align="center"
| Screenshot =
! [[Bild:X11.png|none|Logo des X Window System]]<small>Logo des X Window System</small>
| Beschreibung =
|}
| Maintainer = [[X.Org Foundation]]
Das '''X Window System''' (auch: X Version 11, X11, X, aber '''nicht''' X-Window'''s''') ist eine Sammlung von [[Netzwerkprotokoll|Protokollen]], [[Computerprogramm]]en und Standards zur Ansteuerung grafischer Bildschirme im Allgemeinen und zur Anzeige einer [[Grafische Benutzeroberfläche|grafischen Benutzungsoberfläche]], vor allem unter [[Unix]]-Systemen.
| Programmiersprache = [[C (Programmiersprache)|C]]
| Hersteller =
| AktuelleVersion = <!-- von Wikidata: -->{{#invoke:Wikidata|claim|P348|id=Q178481}}
| AktuelleVersionFreigabeDatum = {{#invoke:Wikidata|claim|P348|id=Q178481|qualifier=P577}},<br />darin: [[X.Org-Server]] {{#invoke:Wikidata|claim|P348|id=Q518900}}, {{#invoke:Wikidata|claim|P348|id=Q518900|qualifier=P577}}
| AktuelleVorabVersion =
| AktuelleVorabVersionFreigabeDatum =
| Betriebssystem = [[unixoide]] ([[Berkeley Software Distribution|BSD]], [[macOS]], [[Linux]] u.&nbsp;a.), [[Virtual Memory System|VMS]]
| Kategorie = [[Grafische Benutzeroberfläche]], [[Netzwerkprotokoll]]
| Lizenz = [[MIT-Lizenz]]
| Deutsch = nein
| Website = [https://x.org x.org]
}}
[[Datei:Gnome-2.18.1.png|mini|[[Gnome]] 2.18.1]]
[[Datei:KDE 4.png|mini|[[K Desktop Environment|KDE]] 4.10]]
[[Datei:Xfce461-de.png|mini|[[Xfce]] 4.6.1]]
[[Datei:X client server example.svg|mini|Zusammenwirken von X Server und X Client. Im oberen Teil der Grafik ist ein Benutzerrechner schematisch dargestellt, auf dem ein X Server die Tastatur, die Maus und den Bildschirm verwaltet. Der X Server interagiert in dem Beispiel mit drei X Clients: einem lokalen Browser, einem lokalen [[xterm]] (zur Interaktion mit [[Unix-Shell]]) und einem entfernten xterm]]


Das '''X Window System''' (auch '''X Version 11''', '''X11''', '''X''') ist ein [[Netzwerkprotokoll]] und eine Software, die [[Fenstersystem|Fenster]] auf [[Rastergrafik|Bitmap-Displays]] auf den meisten [[Unixoides System|unixoiden Betriebssystemen]] und [[OpenVMS]] ermöglicht. X11 wurde auf allen gebräuchlichen Betriebssystemen implementiert.
== Geschichte von X ==


Es stellt einen Standardbaukasten und das Protokoll zum Bau einer [[Grafische Benutzeroberfläche|grafischen Benutzeroberfläche]] zur Verfügung. Dazu gehören Zeichnen und Bewegen von Fenstern auf dem Bildschirm sowie das Behandeln der Benutzereingaben mit Maus und Tastatur. X schreibt keine spezielle [[Benutzerschnittstelle]] vor, sondern überlässt dies seinen [[Client]]-Programmen. Deshalb können X-basierte Umgebungen in ihrem Aussehen sehr variieren. Mithilfe von [[Desktop-Umgebung]]en –&nbsp;die bekanntesten, [[K Desktop Environment|KDE]] und [[Gnome]] sind rechts abgebildet&nbsp;– wird dem entgegengewirkt. [[Endanwender]] kommen auf modernen Unix-Desktops mit den Kernprogrammen des X&nbsp;Window Systems kaum noch in Berührung.
X wurde [[1984]] im Projekt Athena in Zusammenarbeit des [[Massachusetts Institute of Technology|MIT]], der Digital Equipment Corp. und [[IBM]] entwickelt. Die erste Version wurde im Juni 1984 freigegeben, im September [[1987]] folgte die Version X11.


Frühere Anzeigeprotokolle konnten nur eingebaute oder direkt angeschlossene Anzeigen verwalten. In Erweiterung dazu wurde X spezifisch als [[Client-Server-Modell#Client-Server-System|Client-Server-System]] entworfen, was neben der lokalen auch eine [[Netzwerktransparenz|netzwerktransparente]] Verwendung ermöglicht.
Als [[1988]] der Erfolg immer größer wurde, wurde das nicht-kommerzielle X-Konsortium gegründet, welches die weitere Entwicklung übernahm. Es veröffentlichte verschiedene Versionen, die letzte große, X11R6 [[1994]].
Danach übernahm The Open Group die Entwicklung und Standardisierung.
Seit [[2004]] wird es unter Führung von [[X.Org]] weitestgehend standardisiert.


Die [[X.Org Foundation]] betreut heute das Projekt und hat am 6. Juni 2012 die Version 7.7 der [[Referenzimplementierung]] als freie Software unter der [[MIT-Lizenz]] herausgegeben. Eine weitere, in den 1990ern und der ersten Hälfte der 2000er Jahre weit verbreitete Implementierung ist [[XFree86]]. Der direkte Nachfolger ist der Fork namens X11Libre oder das umstrittene [[Wayland (Display-Server-Protokoll)|Wayland]] .
Zu großer Verbreitung auf PCs brachte es die Implementierung in Form der

[[freie Software|freien Software]] [[XFree86]], die nun teilweise, aufgrund einer
== Geschichte ==
lizenzrechtlichen Inkompatibilität mit der [[GNU General Public License|GPL]] und
X wurde 1984 im [[Projekt Athena]] in Zusammenarbeit des [[Massachusetts Institute of Technology|MIT]], [[Digital Equipment Corporation|DEC]] und [[IBM]] entwickelt.<ref name="heiseX30y">{{Internetquelle |autor=Jürgen Seeger |url=https://www.heise.de/newsticker/meldung/Das-X-Window-System-wird-30-2235688.html |titel=Das X Window System wird 30 |titelerg=Am 19. Juni 1984 lief der erste Prototyp des netzweiten, grafischen Fenstersystems&nbsp;X, das bis heute Standard auf Unix- und Linux-Systemen ist |werk=[[Heise online]] |datum=2014-06-20 |abruf=2014-06-20}}</ref> Die erste Version wurde am 19. Juni 1984 vorgestellt und 1986 wurde X&nbsp;10.4 mit großem Erfolg gegen eine Schutzgebühr an alle Interessierten verteilt, womit X erstmals eine große Verbreitung auf den Unix-Rechnern jener Zeit erreichte. X10 war jedoch inkompatibel zum späteren X11.<ref>[http://www.guidebookgallery.org/articles/thexwindowsystem ''The X Window System''.] In: ''Guidebook'', Stand: 25. Juni 2005 (englisch); ursprünglich in der ''[[Byte (Zeitschrift)|Byte]]'', Ausgabe 1/89, S. 353–360; abgerufen am 31. Mai 2013.</ref> Im September 1987 schließlich folgte das erste Release von X11.
der Auflösung des Entwicklerteams von XFree86, durch eine Weiterentwicklung von

[[X.Org]] abgelöst wurde.
Als 1988 die Popularität immer größer wurde, wurde das nicht-kommerzielle X-Konsortium gegründet, das die weitere Entwicklung übernahm. Es veröffentlichte verschiedene Versionen, die letzte große war X11R6 1994. Danach übernahm ''The [[Open Group]]'' die Entwicklung und Standardisierung. In der gleichen Zeit erreichte die freie X-Implementierung [[XFree86]] einen immer größeren Bekanntheitsgrad und wurde zum De-facto-Standard der X-Implementierung. 2003 aber gab es projektinterne und lizenzrechtliche Probleme bei XFree86, die im Endeffekt zur Auflösung des Entwicklerteams führten. Unter dem Dach der daraufhin neu gegründeten [[X.Org Foundation]] wurde fortan eine [[Abspaltung (Softwareentwicklung)|Abspaltung]] des alten XFree86 weiterentwickelt, die unter dem Namen [[X.Org-Server]] größtenteils in dessen Fußstapfen trat. Seit etwa 2005 gilt er als der meistverbreitete X-Server und damit die meistverbreitete X-Implementierung.


== Technik ==
== Technik ==
[[Datei:Some X windows.svg|mini|Mögliche Fensterverteilung durch einen X11-[[Fenstermanager]]]]
[[Datei:Xframe (en).png|mini|X11-Fensterelemente, Beispiel mit Fenstermanager [[FVWM|FVWM2]]]]


Der X-Server steuert die Ein- und Ausgabegeräte wie die [[Maus (EDV)|Maus]], Tastatur, den Bildschirm und die Grafikkarte. Um dies zu erreichen, kommuniziert er in der Theorie mit dem [[Betriebssystem]]-[[Kernel]],
Der X-Server steuert die Ein- und Ausgabegeräte wie unter anderem [[Zeigegerät]]e (z.&nbsp;B. [[Computermaus|Maus]]), Tastatur, Bildschirm und [[Grafikkarte]]. Dazu kommuniziert er in der Theorie mit dem Betriebssystem-[[Kernel (Betriebssystem)|Kernel]], in der Praxis wird der Kernel aber auch umgangen. Das zugrundeliegende Konzept ist eine Erweiterung des [[Terminal (Computer)|Terminal]]-Konzeptes auf grafische Benutzeroberflächen: Ein Programm verlässt sich für die grafische Eingabe (Maus) und Ausgabe (Fenstertechnik) auf die Dienste eines anderen dafür spezialisierten Programms (X-Server), die Kommunikation läuft immer über das Netzwerk.
in der Praxis wird der Kernel auch schon mal umgangen.


Die Darstellung bei X ist die eines [[rastergrafik]]basierten [[Fenstersystem]]s, das verschiedene Funktionen bereit stellt. Dazu gehört das Zeichnen und Bewegen der Fenster, die ereignisorientierte Handhabung eines Zeigergeräts wie einer Maus, die [[Interprozesskommunikation]] und teilweise auch die Verwaltungsfunktionen für Druck und Sound.
Die Darstellung bei X ist die eines [[Rastergrafik]]-basierten [[Fenstermanager]]s, der verschiedene Funktionen bereitstellt. Dazu gehört das Zeichnen und Bewegen der Fenster, die ereignisorientierte Handhabung eines Zeigegeräts, z.&nbsp;B. einer Maus, die [[Interprozesskommunikation]] und teilweise auch die Verwaltungsfunktionen für Druck und Audio-Ausgabe. X ist also ein Minimalsystem, bei dem zum Zeichnen lediglich [[Grafisches Primitiv|Primitive]] wie Linien, Muster etc. bereitgestellt werden.
X ist also ein Minimalsystem, bei dem zum Zeichnen lediglich [[Grafisches_Primitiv|Primitives]] wie Linien, Muster, etc. bereitgestellt werden.


Das eigentliche Aussehen und Verhalten des Fenstersystems wird deshalb nicht von X bestimmt, sondern von dem [[Windowmanager]], der wie eine normale Anwendung einfach als Client des X Servers läuft. Für das Aussehen der Programme selbst aber ist dieser nicht verantwortlich, dies übernimmt meist eine [[Oberflächenbibliothek]], die das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z.&nbsp;B. Menüs und Buttons übernimmt. Siehe dazu auch [[Desktop-Environment]].
Das eigentliche Aussehen und Verhalten des Fenstersystems wird deshalb nicht von X bestimmt, sondern von dem [[Fenstermanager]], der wie eine normale Anwendung einfach als Client des X-Servers läuft. Für das Aussehen der Programme selbst ist er aber nicht verantwortlich, das übernimmt meistens das sog. [[GUI-Toolkit]], welches das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z.&nbsp;B. Menüs und Buttons übernimmt. Siehe dazu auch [[Desktop-Umgebung]].


=== Kommunikationsmodell ===
=== Kommunikationsmodell ===
X baut auf einem [[Client-Server-Modell]] auf:


* Der '''X-Server''' läuft auf dem Rechner am Arbeitsplatz und stellt seine (grafischen) Dienste den X-Clients zur Verfügung. Er enthält den Grafikkartentreiber sowie Treiber für Tastatur, Maus und andere Eingabegeräte (wie z.&nbsp;B. Grafik-Tablets) und kommuniziert mit dem ''X-Client'' mittels Interprozesskommunikation.
X ist [[Netzwerktransparenz|netzwerktransparent]] und baut auf dem [[Client-Server]]-Modell auf.
Zu beachten ist hierbei, dass der X-Server auf dem lokalen Arbeitsplatzrechner läuft, während der X-Client ebenfalls dort, oder aber auf einem entfernten Rechner ausgeführt werden kann. Was zunächst seltsam klingt, stellt sich bei genauerer Betrachtung als logisch heraus:


* Der '''X-Client''' ist das Anwendungsprogramm, das die grafischen Ein/Ausgabe-Dienste des X-Servers benutzt. Er kann auf demselben oder auch auf irgendeinem entfernten Rechner laufen (sofern eine Netzwerkverbindung zwischen beiden besteht). Der X-Client benutzt die Dienste des X-Servers, um eine grafische Darstellung zu erreichen und empfängt von ihm die diversen Ereignisse (''events'') wie Tastenanschläge, Mausbewegungen, Klicks usw.
*Der '''X-Server''' läuft auf dem Rechner am Arbeitsplatz und stellt seine (grafischen) Dienste den X-Clients zur Verfügung. Er enthält den Grafikkartentreiber, Treiber für Tastatur und Maus, und kommuniziert mit dem ''X client'' über das Netzwerk.

*Der '''X-Client''' wird hingegen durch das Anwendungsprogramm dargestellt, welches lokal auf dem selben Rechner oder auch auf irgendeinem entfernten Rechner laufen kann (sofern eine Netzwerkverbindung zwischen beiden besteht). Der X-Client benutzt die Dienste des X-Servers um eine grafische Darstellung zu erreichen und empfängt von ihm die diversen Ereignisse (''events'') wie Tastenanschläge, Mausbewegungen, Klicks usw.


=== X-Terminal ===
=== X-Terminal ===
Das in der Großrechner-Welt bekannte, textbasierte [[Terminal (Computer)|Terminal]]-System (dort meistens proprietäre wie [[IBM 5250]] und [[IBM 3270|3270]]; unter [[Digital Equipment Corporation|Digitals]] [[Virtual Memory System|VMS]] die bekannten seriellen Terminals wie z.&nbsp;B. [[VT100]]) erlebte seine grafische Weiterentwicklung zum '''X-Terminal'''; ein Rechner, auf dem nichts anderes als ein X-Server<!--sic--> läuft. Diese X-Terminals werden häufig genutzt, um mit leistungsschwachen Rechnern auf rechenintensive Anwendungen zuzugreifen: Die Anwendung selbst läuft auf einem Server, das X-Terminal übernimmt nur die Anzeige der grafischen Oberfläche.


Statt spezieller Hardware für X-Terminals hat es sich letztlich durchgesetzt, auf Standard-Hardware von [[Personal Computer|PCs]] zurückzugreifen. Mit dieser können die Funktionen von X-Terminals zum Beispiel in Form von [[Thin Client]] preiswert umgesetzt werden.
Das in der Großrechner-Welt bekannte, textbasierte Terminal-System (dort meist proprietäre wie IBM 5250 und 3270; unter Unix die bekannten seriellen Terminals wie z.&nbsp;B. [[VT100]]) erlebte seine grafische Weiterentwicklung zum '''X-Terminal'''; ein Rechner, auf dem nichts anderes als ein X-Server läuft.
Diese X-Terminals werden häufig genutzt, um mit Rechnern mit leistungsschwächerer Hardware auf rechenintensive Anwendungen zuzugreifen: die Anwendung selbst läuft auf einem Server, das X-Terminal übernimmt nur die Anzeige der grafischen Oberfläche.


== Stärken ==
=== 3D-Beschleunigung ===
Um schnelle 2D- und 3D-[[Hardwarebeschleunigung#Grafikkarten|Beschleunigung]] zu ermöglichen, stellt das X&nbsp;Window System die Schnittstelle [[Direct Rendering Infrastructure]] (DRI) bereit, über die Programme direkt auf die Grafik-Hardware zugreifen können. Das geschieht bei freien Treibern durch die [[OpenGL]]- und [[Vulkan (API)|Vulkan]]-Implementierung [[Mesa&nbsp;3D]], im Fall von [[Binärblob|proprietären Treibern]] durch jeweils proprietäre Implementierungen davon.


Mit Hilfe von 3D-Erweiterungen wie [[AIGLX]] und [[xgl]] werden im X.Org-Server darüber hinaus 3D-Effekte auf dem Desktop selbst unterstützt.
Das X-System wurde von Anfang an für den effizienten Netzwerkbetrieb konzipiert. Die Kommunikation zwischen Client und Server läuft über ein standardisiertes Protokoll ab, das nur relativ geringe Transferraten benötigt. Der Quellcode des X-Systems ist zwar objektorientiert, aber dennoch in [[C (Programmiersprache)|C]] geschrieben, so dass eine Übersetzung auf nahezu jedem Unix-Rechner möglich ist. Das X-System ist im Gegensatz zu MS-Windows kein Teil des Betriebssystems: Ein Absturz von X hat deshalb i.&nbsp;A. keinen Einfluss auf die Integrität des Rechners. Weiterhin hat der Windowmanager (die "Bedienoberfl&auml;che") im Prinzip denselben Status wie ein X-Client: Man kann im laufenden Betrieb einen Windowmanager durch einen anderen ersetzen. Bereits mit sehr kleinen Windowmanagern (z.&nbsp;B. [[twm]], ca. 140 [[Liste der Vorsilben für Maßeinheiten|KiBytes]]) kann komfortabel gearbeitet werden.

== Stärken ==
Das X-System wurde von Anfang an für den effizienten Netzwerkbetrieb konzipiert. Die Kommunikation zwischen Client und Server läuft über ein standardisiertes Protokoll ab, das nur relativ geringe Transferraten benötigt. Der Quellcode des X-Systems ist zwar objektorientiert, aber dennoch in [[C (Programmiersprache)|C]] geschrieben, so dass eine Übersetzung auf nahezu jedem Unix-Rechner möglich ist. Das X-System ist im Gegensatz zu aktuellen [[Microsoft Windows|MS-Windows]]-Versionen kein Bestandteil des Betriebssystems, weswegen ein [[Computerabsturz|Absturz]] von X in der Regel keinen Einfluss auf dessen [[Integrität (Informationssicherheit)|Integrität]] hat: Stürzt der X-Server ab oder reagiert nicht mehr, können die Clients reagieren und z.&nbsp;B. auf einen Neustart des X-Servers warten oder sich (was meistens der Fall ist) beenden. Weiterhin hat der [[Fenstermanager]] (die „Bedienoberfläche“) im Prinzip denselben Status wie ein X-Client: Im laufenden Betrieb kann ein Fenstermanager durch einen anderen ersetzt werden. Bereits mit sehr kleinen Fenstermanagern (z.&nbsp;B. [[twm]], rund 140&nbsp;[[Kilobyte|KB]]) kann komfortabel gearbeitet werden.


Durch den durchdachten, hierarchischen Aufbau des Systems ist beispielsweise Folgendes möglich:
Durch den durchdachten, hierarchischen Aufbau des Systems ist beispielsweise Folgendes möglich:
Zeile 52: Zeile 69:
* Programme an einem Rechner mit völlig anderer Hard- und Software als dem Bedienrechner ausführen.
* Programme an einem Rechner mit völlig anderer Hard- und Software als dem Bedienrechner ausführen.


Die Weiterentwicklung von X läuft im Vergleich zur Hardware auf großen Zeitskalen, mit nur geringen Veränderungen ab. Kompatibilitätsprobleme treten daher nicht auf, wenn nur Standardbibliotheken verwendet werden. Allerdings benutzt ein großer Teil der X-Clients heute Erweiterungen wie [[Xft]], [[XVideo]] oder [[Xinerama]].
Die Weiterentwicklung von X läuft im Vergleich zur Hardware auf großen Zeitskalen und mit nur geringen Veränderungen ab. [[Kompatibilität (Technik)|Kompatibilitätsprobleme]] treten daher nicht auf, wenn nur Standardbibliotheken verwendet werden. Allerdings benutzt ein großer Teil der X-Clients heute Erweiterungen wie [[Xft]], [[XVideo]] oder [[Xinerama]].

Die strikte Trennung des X Window Systems von der Benutzeroberfläche führt zu einem vergleichsweise flexiblen System, das aber auch sehr uneinheitlich erscheinen kann: Da das Design der Oberflächenelemente im Gegensatz zu Windows oder Mac OS nicht aus dem eingestellten Design des Haupt-[[GUI-Toolkit]]s stammt, sondern es verschiedene Toolkits (unter anderem [[Qt (Bibliothek)|Qt]] und [[GTK (Programmbibliothek)|GTK]]) mit verschiedenen Eigenschaften gibt, die verschiedene Designs verwenden, kann es durchaus vorkommen, dass jedes der genutzten Programme ein unterschiedliches Aussehen und Verhalten zeigt.


== Schwächen ==
== Schwächen ==
Mit <code>xinput list</code> und <code>xinput test id</code> fungiert der X-Server als [[Keylogger]], wobei selbst das [[sudo]]-Passwort ausgelesen werden kann. Voraussetzung für diese Art des Angriffs ist aber, dass bereits ein X-Server mit <code>root</code>-Rechten läuft. Viele Linux-Distributionen verhindern deshalb in der Standardkonfiguration die Anmeldung als <code>root</code>.<ref name="heise-205684">{{Internetquelle |autor=Michael Plura |url=https://www.heise.de/ix/meldung/Aufgesperrt-Root-Rechte-mit-X-Org-4205684.html |titel=Aufgesperrt: Root-Rechte mit X.Org – iX Magazin |werk=heise.de |datum=2018-10-29 |abruf=2018-10-29}}</ref> Das erstmals 2008 vorgestellte [[Wayland (Display-Server-Protokoll)|Wayland]]-System soll den X-Server ablösen, dessen historisch gewachsene Schwachpunkte vermeiden und deutlich weniger Sicherheitslücken aufweisen.<ref name="blogspot-201104">{{Internetquelle |url=https://theinvisiblethings.blogspot.com/2011/04/linux-security-circus-on-gui-isolation.html |titel=The Invisible Things Lab’s blog: The Linux Security Circus: On GUI isolation |werk=theinvisiblethings.blogspot.com |datum=2011-04-23 |abruf=2018-10-28}}</ref><ref>{{Internetquelle |autor= |url=https://www.golem.de/news/linux-und-bsd-sicherheitsluecke-in-x-org-ermoeglicht-root-rechte-1810-137347.html |titel=Linux und BSD: Sicherheitslücke in X.org ermöglicht Root-Rechte |werk= |hrsg=[[Golem.de]] |datum= |abruf=2025-03-15}}</ref>

Dies alles führt dazu, dass X ein sehr flexibles, aber oft auch sehr uneinheitliches System ist.
Es kann durchaus vorkommen, dass jedes der Programme, die man selbst benutzt, unterschiedlich aussieht und sich geringfügig unterschiedlich verhält.
Dies ist auch ein oft angesprochener Kritikpunkt an X.
Ein möglicher Lösungsansatz ist die Erstellung einer [[Schreibtisch (EDV)|Desktopoberfläche]] mit einheitlichen Oberflächenbibliotheken.
Die heute bekanntesten Systeme dieser Art sind [[K Desktop Environment|KDE]] und [[GNOME]], historisch von Bedeutung ist auch [[Common_Desktop_Environment|CDE]].
Ein alternativer Lösungsansatz wäre es, auf X vollständig zu verzichten und es durch ein auf höherem Niveau angelegtes System zu ersetzen, das von Beginn an eine einheitliche Behandlung von Oberflächenelementen beinhaltet.
Ein solcher Versuch ist das [[Fresco-Projekt]], aber auch das [[Y-Window-System]].


== Ansätze zur Verbesserung ==
== Ansätze zur Verbesserung ==
=== Übertragungsgeschwindigkeit ===
Es wurden mehrere Ansätze entwickelt, um die Übertragungsgeschwindigkeit zu verbessern:
* [[Datenkompression|Kompression]] der Übertragungsdaten,
* Anlegen eines [[Cache]]s für schon übertragene Daten und
* Reduzierung des Einflusses der [[Paketumlaufzeit]] zwischen X-Client und X-Server durch effizientere Programmierung.


Mehrere Projekte versuchen, diese Techniken umzusetzen. Die [[XCB]]-Bibliothek ist eine Neufassung der [[Xlib]]-Bibliothek, die im X-Server den Datenverkehr zwischen Client und Server regelt. Bei der Entwicklung von XCB wird insbesondere Wert auf eine gesteigerte Effizienz gelegt.
Ein weiteres Problem beim Einsatz des X-Window-Systems über Rechnergrenzen hinweg ist seine sehr häufig langsame und dem Anwender "zäh" vorkommende Performanz bei Verbindungen über schmale Bandbreiten mit hoher Latenzzeit (Modem, ISDN).


Einen hohen Bekanntheitsgrad hat ebenfalls das [[NX NoMachine|NX]]-Projekt des italienischen Unternehmens NoMachine, das mit Hilfe eines Caches und Datenkompression X auch über Modem-Leitungen nutzbar macht.
Mögliche Ansätze, diesen Problemen zu begegnen sind


In der Vergangenheit arbeitete auch das Low-Bandwidth-X-Projekt von [[Keith Packard]] in diesem Bereich. Es war gedacht, eine Erweiterung des X-Protokolls zu erstellen, um dessen Netzwerktransparenz auch für niedrige Bandbreiten nutzbar zu machen. Mit der Veröffentlichung der von X11R6.3 durch das X-Konsortium im Dezember 1996 wurde LBX eine volle Erweiterung des X-Protokolls. Da es aber nie großflächig genutzt wurde und auch nur für einen Teil der Probleme eine Lösung bieten konnte, wurde das Projekt im Laufe des Jahres 2000 von Keith Packard für tot erklärt.<ref>[http://keithp.com/~keithp/talks/lbxpost/paper.html ''An LBX Postmortem''.] Keithp.com, Stand: 2000 (englisch) abgerufen am 31. Mai 2013.</ref>
* [[Kompression]] der Übertragungsdaten,
* Anlegen eines [[Cache]]s für schon übertragene Daten und
* Reduzierung der [[Roundtrips]] zwischen X-Client und X-Server


=== Gesteigerte Einheitlichkeit ===
Viele "Roundtrips" sind unnötig und werden teilweise von ineffizienter Programmierung von [[X-Applikationsprogrammen]] verursacht. Ein effizienter Cache erspart die wiederholte Übertragungen derselben Datenblöcke (z.&nbsp;B. [[Icon (Computer)|Icons]] in Programm-[[Menüleisten]]). Die starke Kompression reduziert den Datenverkehr weiter.
Eine gesteigerte Einheitlichkeit wurde ebenfalls von mehreren Projekten verfolgt. Ansätze waren die Erstellung einer [[Desktop (grafische Benutzeroberfläche)|Desktopoberfläche]] mit einheitlichen Oberflächenbibliotheken oder aber das Ersetzen von X durch ein auf höherem Niveau angelegtes System, das von Beginn an eine einheitliche Behandlung von Oberflächenelementen beinhaltete. Das [[Fresco-Projekt]] und das Y Window System entwickelten jeweils Lösungen, um den zweiten Ansatz umzusetzen, die Projekte ruhen aber zurzeit.


Ein anderer, aktiv verfolgter Ansatz ist der Versuch, durch gemeinsame Richtlinien für Benutzerschnittstellen und Verhaltensweisen der Software Einheitlichkeit zwischen den verschiedenen Toolkits zu erlangen. Dieser Ansatz wird vor allen Dingen im Rahmen des [[freedesktop.org]]-Projekts verfolgt und führte dort z.&nbsp;B. zu einheitlichen Standards für Icons.
Verschiedene Projekte versuchen, diese Ansätze zu implementieren. Neben dem (inzwischen aufgegebenen) [[LBX]]-Projekt hat in jüngerer Zeit das [[NX]]-Projekt der italienischen Firma NoMachine einen hohen Bekanntheitsgrad erreicht. Andere Projekte versuchen, die Schwächen von X11 durch ein komplettes Redesign zu umgehen, haben dabei aber mit Akzeptanzproblemen zu kämpfen. Alternativ kann man die Netzwerktransparenz von X ungenutzt lassen und den kompletten Bildschirminhalt eines X-Servers, der mit den Clients auf demselben Rechner läuft, effizienter mit Programmen wie [[Virtual Network Computing|VNC]] oder [[Remote Desktop Protocol|rdesktop]] übertragen.


== Bekannte Vertreter ==
== Sonstiges ==
In den frühen 1990er-Jahren war die komplette X11-[[Distribution (Software)|Distribution]] oft die größte Datei (rund 10 bis 50&nbsp;[[Megabyte|MB]]) auf Unix-Rechnern. Da sie zudem [[Freie Software|frei]] war, wurde sie gerne als [[Mailbombe]] verwendet oder zumindest damit gedroht. „Soll ich Dir ein X11R3 schicken“ war daher im [[Usenet]] ein [[Running Gag]], um [[Newbie]]s auf Fehlverhalten hinzuweisen.


Die X11-Farben sind heute Grundlage der Farbnamen in [[Cascading Style Sheets|CSS]].
Da es sich bei X um frei einsehbare Protokolle und Standards handelt, gibt es mehrere Projekte, die versuchen diese umzusetzen. Die bekanntesten sind die auch schon erwähnten Server [[X.Org]] und [[XFree86]].


==Siehe auch==
== Siehe auch ==
* [[X Display Manager]]
* [[Cygwin|Cygwin/X]] (Windows-Implementierung)
* [[Xming]] (Windows-Implementierung)
* [[XQuartz]] (macOS-Implementierung)
* [[Quartz Compositor]]
* [[Rio (Software)]]
* [[:Kategorie:X-Server]]


== Literatur ==
*[[Windowmanager]]
* [http://www.sbin.org/doc/Xlib/index_contents.html ''Xlib Programming Manual''.] O’Reilly & Associates


=== Weblinks ===
== Weblinks ==
{{Commonscat}}
*http://www.x.org
{{Wikibooks|Guide to X11|Guide to X11|lang=en}}
*http://www.nomachine.com
*http://www.xfree86.org
* [http://www.x.org/ X.Org Foundation]
*http://xserver.freedesktop.org
* [http://www.xfree86.org/ XFree86 Project, Inc]
*http://www.fresco.org
* [http://www.fresco.org/ Fresco – a windowing system]
* [https://www.heise.de/ct/artikel/Die-Woche-Das-Ende-von-X11-1134463.html ''Die Woche: Das Ende von X11?''] [[c’t]]
*http://www.apple.com/macosx/features/x11/
*http://www.paulandlesley.org/faqs/LBX-HOWTO.html
*http://www.pexus.com/


== Einzelnachweise ==
[[Kategorie:Software]]
<references />


[[Kategorie:X Window System| ]]
[[ca:XWindow]]
[[Kategorie:Internet-Anwendungsprotokoll]]
[[en:X Window System]]
[[Kategorie:Unix-Software]]
[[es:X Window System]]
[[Kategorie:Linux-Software]]
[[fi:X Window System]]
[[Kategorie:BSD-Software]]
[[fr:X Window System]]
[[Kategorie:MacOS-Betriebssystemkomponente]]
[[it:X Window System]]
[[Kategorie:Freie Systemsoftware]]
[[ja:X Window System]]
[[lt:X Window]]
[[nl:X Window-systeem]]
[[pl:X Window System]]
[[pt:X Window System]]
[[ru:X Window System]]
[[sv:X Window System]]

Aktuelle Version vom 13. Juni 2025, 08:37 Uhr

X Window System

Logo des X Window Systems
Basisdaten

Hauptentwickler X.Org Foundation
Entwickler X.Org Foundation, Keith Packard
Erscheinungsjahr 1984
Aktuelle Version X11R7.7
(Format invalid)
Betriebssystem unixoide (BSD, macOS, Linux u. a.), VMS
Programmier­sprache C
Kategorie Grafische Benutzeroberfläche, Netzwerkprotokoll
Lizenz MIT-Lizenz
deutschsprachig nein
x.org
Gnome 2.18.1
KDE 4.10
Xfce 4.6.1
Zusammenwirken von X Server und X Client. Im oberen Teil der Grafik ist ein Benutzerrechner schematisch dargestellt, auf dem ein X Server die Tastatur, die Maus und den Bildschirm verwaltet. Der X Server interagiert in dem Beispiel mit drei X Clients: einem lokalen Browser, einem lokalen xterm (zur Interaktion mit Unix-Shell) und einem entfernten xterm

Das X Window System (auch X Version 11, X11, X) ist ein Netzwerkprotokoll und eine Software, die Fenster auf Bitmap-Displays auf den meisten unixoiden Betriebssystemen und OpenVMS ermöglicht. X11 wurde auf allen gebräuchlichen Betriebssystemen implementiert.

Es stellt einen Standardbaukasten und das Protokoll zum Bau einer grafischen Benutzeroberfläche zur Verfügung. Dazu gehören Zeichnen und Bewegen von Fenstern auf dem Bildschirm sowie das Behandeln der Benutzereingaben mit Maus und Tastatur. X schreibt keine spezielle Benutzerschnittstelle vor, sondern überlässt dies seinen Client-Programmen. Deshalb können X-basierte Umgebungen in ihrem Aussehen sehr variieren. Mithilfe von Desktop-Umgebungen – die bekanntesten, KDE und Gnome sind rechts abgebildet – wird dem entgegengewirkt. Endanwender kommen auf modernen Unix-Desktops mit den Kernprogrammen des X Window Systems kaum noch in Berührung.

Frühere Anzeigeprotokolle konnten nur eingebaute oder direkt angeschlossene Anzeigen verwalten. In Erweiterung dazu wurde X spezifisch als Client-Server-System entworfen, was neben der lokalen auch eine netzwerktransparente Verwendung ermöglicht.

Die X.Org Foundation betreut heute das Projekt und hat am 6. Juni 2012 die Version 7.7 der Referenzimplementierung als freie Software unter der MIT-Lizenz herausgegeben. Eine weitere, in den 1990ern und der ersten Hälfte der 2000er Jahre weit verbreitete Implementierung ist XFree86. Der direkte Nachfolger ist der Fork namens X11Libre oder das umstrittene Wayland .

X wurde 1984 im Projekt Athena in Zusammenarbeit des MIT, DEC und IBM entwickelt.[1] Die erste Version wurde am 19. Juni 1984 vorgestellt und 1986 wurde X 10.4 mit großem Erfolg gegen eine Schutzgebühr an alle Interessierten verteilt, womit X erstmals eine große Verbreitung auf den Unix-Rechnern jener Zeit erreichte. X10 war jedoch inkompatibel zum späteren X11.[2] Im September 1987 schließlich folgte das erste Release von X11.

Als 1988 die Popularität immer größer wurde, wurde das nicht-kommerzielle X-Konsortium gegründet, das die weitere Entwicklung übernahm. Es veröffentlichte verschiedene Versionen, die letzte große war X11R6 1994. Danach übernahm The Open Group die Entwicklung und Standardisierung. In der gleichen Zeit erreichte die freie X-Implementierung XFree86 einen immer größeren Bekanntheitsgrad und wurde zum De-facto-Standard der X-Implementierung. 2003 aber gab es projektinterne und lizenzrechtliche Probleme bei XFree86, die im Endeffekt zur Auflösung des Entwicklerteams führten. Unter dem Dach der daraufhin neu gegründeten X.Org Foundation wurde fortan eine Abspaltung des alten XFree86 weiterentwickelt, die unter dem Namen X.Org-Server größtenteils in dessen Fußstapfen trat. Seit etwa 2005 gilt er als der meistverbreitete X-Server und damit die meistverbreitete X-Implementierung.

Mögliche Fensterverteilung durch einen X11-Fenstermanager
X11-Fensterelemente, Beispiel mit Fenstermanager FVWM2

Der X-Server steuert die Ein- und Ausgabegeräte wie unter anderem Zeigegeräte (z. B. Maus), Tastatur, Bildschirm und Grafikkarte. Dazu kommuniziert er in der Theorie mit dem Betriebssystem-Kernel, in der Praxis wird der Kernel aber auch umgangen. Das zugrundeliegende Konzept ist eine Erweiterung des Terminal-Konzeptes auf grafische Benutzeroberflächen: Ein Programm verlässt sich für die grafische Eingabe (Maus) und Ausgabe (Fenstertechnik) auf die Dienste eines anderen dafür spezialisierten Programms (X-Server), die Kommunikation läuft immer über das Netzwerk.

Die Darstellung bei X ist die eines Rastergrafik-basierten Fenstermanagers, der verschiedene Funktionen bereitstellt. Dazu gehört das Zeichnen und Bewegen der Fenster, die ereignisorientierte Handhabung eines Zeigegeräts, z. B. einer Maus, die Interprozesskommunikation und teilweise auch die Verwaltungsfunktionen für Druck und Audio-Ausgabe. X ist also ein Minimalsystem, bei dem zum Zeichnen lediglich Primitive wie Linien, Muster etc. bereitgestellt werden.

Das eigentliche Aussehen und Verhalten des Fenstersystems wird deshalb nicht von X bestimmt, sondern von dem Fenstermanager, der wie eine normale Anwendung einfach als Client des X-Servers läuft. Für das Aussehen der Programme selbst ist er aber nicht verantwortlich, das übernimmt meistens das sog. GUI-Toolkit, welches das Zeichnen und Verwalten der typischen Elemente einer grafischen Oberfläche wie z. B. Menüs und Buttons übernimmt. Siehe dazu auch Desktop-Umgebung.

Kommunikationsmodell

[Bearbeiten | Quelltext bearbeiten]

X baut auf einem Client-Server-Modell auf:

  • Der X-Server läuft auf dem Rechner am Arbeitsplatz und stellt seine (grafischen) Dienste den X-Clients zur Verfügung. Er enthält den Grafikkartentreiber sowie Treiber für Tastatur, Maus und andere Eingabegeräte (wie z. B. Grafik-Tablets) und kommuniziert mit dem X-Client mittels Interprozesskommunikation.
  • Der X-Client ist das Anwendungsprogramm, das die grafischen Ein/Ausgabe-Dienste des X-Servers benutzt. Er kann auf demselben oder auch auf irgendeinem entfernten Rechner laufen (sofern eine Netzwerkverbindung zwischen beiden besteht). Der X-Client benutzt die Dienste des X-Servers, um eine grafische Darstellung zu erreichen und empfängt von ihm die diversen Ereignisse (events) wie Tastenanschläge, Mausbewegungen, Klicks usw.

Das in der Großrechner-Welt bekannte, textbasierte Terminal-System (dort meistens proprietäre wie IBM 5250 und 3270; unter Digitals VMS die bekannten seriellen Terminals wie z. B. VT100) erlebte seine grafische Weiterentwicklung zum X-Terminal; ein Rechner, auf dem nichts anderes als ein X-Server läuft. Diese X-Terminals werden häufig genutzt, um mit leistungsschwachen Rechnern auf rechenintensive Anwendungen zuzugreifen: Die Anwendung selbst läuft auf einem Server, das X-Terminal übernimmt nur die Anzeige der grafischen Oberfläche.

Statt spezieller Hardware für X-Terminals hat es sich letztlich durchgesetzt, auf Standard-Hardware von PCs zurückzugreifen. Mit dieser können die Funktionen von X-Terminals zum Beispiel in Form von Thin Client preiswert umgesetzt werden.

3D-Beschleunigung

[Bearbeiten | Quelltext bearbeiten]

Um schnelle 2D- und 3D-Beschleunigung zu ermöglichen, stellt das X Window System die Schnittstelle Direct Rendering Infrastructure (DRI) bereit, über die Programme direkt auf die Grafik-Hardware zugreifen können. Das geschieht bei freien Treibern durch die OpenGL- und Vulkan-Implementierung Mesa 3D, im Fall von proprietären Treibern durch jeweils proprietäre Implementierungen davon.

Mit Hilfe von 3D-Erweiterungen wie AIGLX und xgl werden im X.Org-Server darüber hinaus 3D-Effekte auf dem Desktop selbst unterstützt.

Das X-System wurde von Anfang an für den effizienten Netzwerkbetrieb konzipiert. Die Kommunikation zwischen Client und Server läuft über ein standardisiertes Protokoll ab, das nur relativ geringe Transferraten benötigt. Der Quellcode des X-Systems ist zwar objektorientiert, aber dennoch in C geschrieben, so dass eine Übersetzung auf nahezu jedem Unix-Rechner möglich ist. Das X-System ist im Gegensatz zu aktuellen MS-Windows-Versionen kein Bestandteil des Betriebssystems, weswegen ein Absturz von X in der Regel keinen Einfluss auf dessen Integrität hat: Stürzt der X-Server ab oder reagiert nicht mehr, können die Clients reagieren und z. B. auf einen Neustart des X-Servers warten oder sich (was meistens der Fall ist) beenden. Weiterhin hat der Fenstermanager (die „Bedienoberfläche“) im Prinzip denselben Status wie ein X-Client: Im laufenden Betrieb kann ein Fenstermanager durch einen anderen ersetzt werden. Bereits mit sehr kleinen Fenstermanagern (z. B. twm, rund 140 KB) kann komfortabel gearbeitet werden.

Durch den durchdachten, hierarchischen Aufbau des Systems ist beispielsweise Folgendes möglich:

  • An einem X-Server mehrere Bildschirm-Arbeitsplätze betreiben.
  • Für Entwicklungs- und Testzwecke einen X-Server in einem Fenster eines anderen X-Servers laufen lassen.
  • Programme an einem Rechner mit völlig anderer Hard- und Software als dem Bedienrechner ausführen.

Die Weiterentwicklung von X läuft im Vergleich zur Hardware auf großen Zeitskalen und mit nur geringen Veränderungen ab. Kompatibilitätsprobleme treten daher nicht auf, wenn nur Standardbibliotheken verwendet werden. Allerdings benutzt ein großer Teil der X-Clients heute Erweiterungen wie Xft, XVideo oder Xinerama.

Die strikte Trennung des X Window Systems von der Benutzeroberfläche führt zu einem vergleichsweise flexiblen System, das aber auch sehr uneinheitlich erscheinen kann: Da das Design der Oberflächenelemente im Gegensatz zu Windows oder Mac OS nicht aus dem eingestellten Design des Haupt-GUI-Toolkits stammt, sondern es verschiedene Toolkits (unter anderem Qt und GTK) mit verschiedenen Eigenschaften gibt, die verschiedene Designs verwenden, kann es durchaus vorkommen, dass jedes der genutzten Programme ein unterschiedliches Aussehen und Verhalten zeigt.

Mit xinput list und xinput test id fungiert der X-Server als Keylogger, wobei selbst das sudo-Passwort ausgelesen werden kann. Voraussetzung für diese Art des Angriffs ist aber, dass bereits ein X-Server mit root-Rechten läuft. Viele Linux-Distributionen verhindern deshalb in der Standardkonfiguration die Anmeldung als root.[3] Das erstmals 2008 vorgestellte Wayland-System soll den X-Server ablösen, dessen historisch gewachsene Schwachpunkte vermeiden und deutlich weniger Sicherheitslücken aufweisen.[4][5]

Ansätze zur Verbesserung

[Bearbeiten | Quelltext bearbeiten]

Übertragungsgeschwindigkeit

[Bearbeiten | Quelltext bearbeiten]

Es wurden mehrere Ansätze entwickelt, um die Übertragungsgeschwindigkeit zu verbessern:

  • Kompression der Übertragungsdaten,
  • Anlegen eines Caches für schon übertragene Daten und
  • Reduzierung des Einflusses der Paketumlaufzeit zwischen X-Client und X-Server durch effizientere Programmierung.

Mehrere Projekte versuchen, diese Techniken umzusetzen. Die XCB-Bibliothek ist eine Neufassung der Xlib-Bibliothek, die im X-Server den Datenverkehr zwischen Client und Server regelt. Bei der Entwicklung von XCB wird insbesondere Wert auf eine gesteigerte Effizienz gelegt.

Einen hohen Bekanntheitsgrad hat ebenfalls das NX-Projekt des italienischen Unternehmens NoMachine, das mit Hilfe eines Caches und Datenkompression X auch über Modem-Leitungen nutzbar macht.

In der Vergangenheit arbeitete auch das Low-Bandwidth-X-Projekt von Keith Packard in diesem Bereich. Es war gedacht, eine Erweiterung des X-Protokolls zu erstellen, um dessen Netzwerktransparenz auch für niedrige Bandbreiten nutzbar zu machen. Mit der Veröffentlichung der von X11R6.3 durch das X-Konsortium im Dezember 1996 wurde LBX eine volle Erweiterung des X-Protokolls. Da es aber nie großflächig genutzt wurde und auch nur für einen Teil der Probleme eine Lösung bieten konnte, wurde das Projekt im Laufe des Jahres 2000 von Keith Packard für tot erklärt.[6]

Gesteigerte Einheitlichkeit

[Bearbeiten | Quelltext bearbeiten]

Eine gesteigerte Einheitlichkeit wurde ebenfalls von mehreren Projekten verfolgt. Ansätze waren die Erstellung einer Desktopoberfläche mit einheitlichen Oberflächenbibliotheken oder aber das Ersetzen von X durch ein auf höherem Niveau angelegtes System, das von Beginn an eine einheitliche Behandlung von Oberflächenelementen beinhaltete. Das Fresco-Projekt und das Y Window System entwickelten jeweils Lösungen, um den zweiten Ansatz umzusetzen, die Projekte ruhen aber zurzeit.

Ein anderer, aktiv verfolgter Ansatz ist der Versuch, durch gemeinsame Richtlinien für Benutzerschnittstellen und Verhaltensweisen der Software Einheitlichkeit zwischen den verschiedenen Toolkits zu erlangen. Dieser Ansatz wird vor allen Dingen im Rahmen des freedesktop.org-Projekts verfolgt und führte dort z. B. zu einheitlichen Standards für Icons.

In den frühen 1990er-Jahren war die komplette X11-Distribution oft die größte Datei (rund 10 bis 50 MB) auf Unix-Rechnern. Da sie zudem frei war, wurde sie gerne als Mailbombe verwendet oder zumindest damit gedroht. „Soll ich Dir ein X11R3 schicken“ war daher im Usenet ein Running Gag, um Newbies auf Fehlverhalten hinzuweisen.

Die X11-Farben sind heute Grundlage der Farbnamen in CSS.

Commons: X Window System – Sammlung von Bildern, Videos und Audiodateien
Wikibooks: Guide to X11 – Lern- und Lehrmaterialien (englisch)

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Jürgen Seeger: Das X Window System wird 30. Am 19. Juni 1984 lief der erste Prototyp des netzweiten, grafischen Fenstersystems X, das bis heute Standard auf Unix- und Linux-Systemen ist. In: Heise online. 20. Juni 2014, abgerufen am 20. Juni 2014.
  2. The X Window System. In: Guidebook, Stand: 25. Juni 2005 (englisch); ursprünglich in der Byte, Ausgabe 1/89, S. 353–360; abgerufen am 31. Mai 2013.
  3. Michael Plura: Aufgesperrt: Root-Rechte mit X.Org – iX Magazin. In: heise.de. 29. Oktober 2018, abgerufen am 29. Oktober 2018.
  4. The Invisible Things Lab’s blog: The Linux Security Circus: On GUI isolation. In: theinvisiblethings.blogspot.com. 23. April 2011, abgerufen am 28. Oktober 2018.
  5. Linux und BSD: Sicherheitslücke in X.org ermöglicht Root-Rechte. Golem.de, abgerufen am 15. März 2025.
  6. An LBX Postmortem. Keithp.com, Stand: 2000 (englisch) abgerufen am 31. Mai 2013.