Haben Sie sich jemals gefragt, was Wayland antreibt?
X11 oder das X Window System ermöglicht Ihrer grafischen Desktopumgebung die Anzeige und Steuerung von Fenstern. Wayland ist ein Ersatz für X11. Es ist schneller und sicherer konzipiert. Hier erfahren Sie, was Sie darüber wissen müssen.
Was ist Wayland?
Wayland ist ein moderner Ersatz für X11, das seit Jahrzehnten das Standard-Fenstersystem unter Linux ist. Wayland ist ein Kommunikationsprotokoll, das die Nachrichtenübermittlung zwischen einem X Window-Anzeigeserver und Client-Anwendungen definiert. Das Wayland-Projekt bietet Client- und Serverbibliotheken, die es Anwendungen ermöglichen, das Protokoll zu verwenden.
Das Wayland-Projekt wurde 2008 von einem Red Hat- Entwickler gestartet.
Die vielen Namen von X
Das X Window System ist ein Fenstersystem, das erstmals 1984 vom Massachusetts Institute of Technology für das Unix-Betriebssystem veröffentlicht wurde . Anwendungen können auf der Funktionalität des Fenstersystems aufbauen, um Benutzeroberflächen zu generieren.
1987 erreichte das X Window System Version 11 und wurde als X11 bekannt. Es wird jetzt von der X.Org Foundation verwaltet . Es ist immer noch Version 11, obwohl es seit 1987 viele kleinere Versionen gab. Zum Zeitpunkt des Schreibens ist die aktuelle stabile Version X11R7.7 .
Das „X“ im Namen steht nicht für die Zehn in römischen Zahlen und bedeutet auch nicht „Xtra“, „Xtended“ oder ähnliches. Ein früheres Fenstersystem hieß „W“ für „Windows“ und beim Start des neuen Projekts wechselte man einfach zum nächsten Buchstaben im Alphabet.
Sie werden hören, dass das X Window-System als „X“, „X11“, „Xorg“, „X Windows“ und „X Window System“ bezeichnet wird.
So funktioniert X11
Das X Window System verarbeitet Ereignisse und Grundelemente auf niedriger Ebene, wie z. B. die Interaktion mit der Maus sowie das Zeichnen und Verschieben von Fenstern. Die Anwendungen verarbeiten die visuellen Elemente und das Design der Benutzeroberfläche. Das Erscheinungsbild der Fenster, ihre Schaltflächen und ihre Position werden vom Anwendungsprogrammierer festgelegt. Das X Window System zeichnet das resultierende Design auf den Bildschirm.
X11 bietet eine Definition für die Kommunikation, die zwischen den verschiedenen Komponenten eines funktionierenden X Window-Systems stattfinden muss. Diese Kommunikation ist erforderlich, da der Code, den eine X-fähige Anwendung zum Zeichnen ihrer Fenster und Schnittstellenelemente verwendet, nicht innerhalb der Anwendung liegt. Diese Arbeit wird zwischen einem X-Server und dem Fenstermanager aufgeteilt.
Anwendungen sind Clients des X-Servers. Der Fenstermanager ist ein spezieller Clienttyp. Der X-Server ist für die Verwaltung von Ressourcen, die Ausführung von Zeichenanforderungen und die Weiterleitung von Ereignissen wie Tastendrücken und Mausklicks an die entsprechenden Anwendungen zuständig.
Es fungiert auch als Vermittler bei der Kommunikation zwischen dem Fenstermanager und den Anwendungen und vermittelt Nachrichten zwischen ihnen hin und her. Der Fenstermanager verwaltet eine Liste der von Anwendungen geöffneten Fenster, wo sie sich auf dem Bildschirm befinden, welche Größe sie haben, ob sie sich überlappen usw.
Ein Compositing Window Manager verwaltet für jedes Fenster einen Offscreen-Puffer. Er fügt diese Puffer zu einem einzigen Bild zusammen, das das oberste Fenster darstellt – das den gesamten Desktop darstellt – und auf den Bildschirm geschrieben wird.
Alle modernen grafischen Desktopumgebungen , einschließlich GNOME und KDE, verwenden Compositing-Fenstermanager.
So funktioniert Wayland
Wayland soll die Probleme von X11 lösen. Die X11-Architektur erfordert viel Nachrichtenübermittlung. Der X-Server sitzt zwischen den Clients und dem Fenstermanager. Er sitzt auch zwischen allem und – über den Kernel – der Grafikhardware . Das Nachrichtenvolumen kann zu Latenz und einem verzögerten, ruckelnden visuellen Erlebnis führen.
Es gibt auch eine große Codebasis. Es gibt die Serveranwendung, die Fenstermanageranwendung und die X11-Bibliothek, die von den Clients verwendet wird. Je größer (und älter) Ihre Codebasis ist, desto schwieriger ist sie zu warten und desto mehr werden Sie mit Legacy-Code zu kämpfen haben.
Durch die Änderung der Architektur hat Wayland die Codebasis modernisiert und rationalisiert, was zu Leistungsvorteilen und verbesserter Sicherheit führt.
Tatsächlich haben sie den Server und den Fenstermanager zu einer Anwendung zusammengeführt. Sie haben jeglichen Code entfernt, der Funktionen ausführte, die jetzt vom Kernel ausgeführt werden. Anstatt den Aufwand zu wiederholen, haben sie die Funktionalität des Kernels genutzt.
Mit Wayland kommunizieren der Compositor und die Client-Anwendung direkt miteinander. Der Compositor verwaltet seine interne Zuordnung, welche Fenster sich wo auf dem Desktop befinden und welche Größe und welchen Status sie haben. Er vermittelt Tastatur-, Maus- und Fensteränderungsereignisse und sendet sie an die Anwendungen, denen diese Fenster gehören.
Die Anwendungen aktualisieren die Benutzeroberfläche entsprechend. Ein wesentlicher Unterschied besteht darin, dass das Rendering innerhalb der Anwendungen selbst mithilfe der verknüpften Wayland-Bibliotheken durchgeführt wird.
Die Anwendung aktualisiert entweder den Puffer, der zum Speichern des Fensters verwendet wird, oder erstellt einen neuen und verwirft den alten. Die Clientanwendung sendet dann eine Benachrichtigung an den Compositor und fordert ihn auf, seine Fensterzuordnung zu aktualisieren und den neuen oder aktualisierten Videopuffer zu verwenden.
Diese vereinfachte Architektur und das moderne Code-Design sorgen für Leistungsverbesserungen; insbesondere Größenänderungen und Ziehen von Fenstern erfolgen reibungslos und flüssig.
Waylands langsame Akzeptanz in Anwendungen
Wayland ist das Standard-Fenstersystem in Debian 10 und neuer, Fedora 34 oder neuer, Ubuntu 18.04 oder neuer und anderen Distributionen wie Arch Linux. Trotzdem führt Wayland in den meisten Fällen X11-Anwendungen aus.
Es gibt eine Kompatibilitätsschicht namens XWayland, die es ermöglicht, X11-Anwendungen unter Wayland auszuführen. Dies war erforderlich, da die Mehrheit der X11-Anwendungen nicht geändert und auf Wayland portiert wurde.
In Desktopumgebungen, die Wayland-Compositors bereitstellen, wie etwa GNOME, sind offizielle Anwendungen wie der GNOME-Texteditor sowie Maps, Files und Calendar allesamt Wayland-native Anwendungen. Die überwiegende Mehrheit der X11-Anwendungen sind jedoch noch immer unberührte, native X11-Anwendungen.
Die XWayland-Middleware funktioniert normalerweise einwandfrei, es kann jedoch Probleme mit einigen X11-Anwendungen geben, die Bildschirmfunktionen auf niedriger Ebene ausführen, wie z. B. Bildschirmaufzeichnungen. Die Verwendung von Wayland mit NVIDIA kann genauso mühsam sein wie mit X11, obwohl ich bei der Verwendung mit meinem täglichen Treiber mit einer NVIDIA GeForce GT 1030 GPU keine Probleme hatte.
Einige Autoren von X11-Anwendungen hoffen wahrscheinlich, dass ihre Anwendung mit XWayland gut funktioniert und sie die Umarbeitung in Wayland-Anwendungen vermeiden können. Seien Sie nicht überrascht, wenn die Einführung und Migration zu Wayland langwierig und langsam ist und neue Anwendungen es übernehmen, die Mehrheit der bestehenden X11-Anwendungen jedoch so bleibt, wie sie sind, und ihre Hoffnungen auf XWayland setzt.
Verwenden Sie Wayland oder X11?
Wenn Sie eine der großen Linux-Distributionen verwenden, ist die Wahrscheinlichkeit groß, dass Sie bereits Wayland verwenden. Sie können dies überprüfen, indem Sie den folgenden Befehl eingeben.
Auf einem System, das Wayland verwendet, lautet die Ausgabe:
Und auf einem System mit dem X Window-System sehen Sie:
In seltenen Fällen ist die XDG_SESSION_TYPEUmgebungsvariable nicht festgelegt. In diesem Fall können Sie stattdessen diesen Befehl verwenden:
Der innere, verschachtelte loginctlBefehl verwendet den show-userBefehl, um Eigenschaften des benannten Benutzers anzuzeigen. Der whoamiBefehl gibt uns den Namen des aktuellen Benutzers . Die -pOption (Eigenschaft) beschränkt die Ausgabe von loginctlauf Informationen zur Einstellung „Anzeige“, und wir verwenden die –valueOption, um nur den Wert zurückzugeben. Wir möchten die Zeichenfolge „Anzeige=“ nicht in der Antwort von haben loginctl. All dies gibt uns eine Sitzungs-ID transcript.
Wir übergeben die Sitzungs-ID an das äußere loginctl, und verwenden den show-sessionBefehl, um Attribute der Sitzung anzuzeigen. Wir verwenden die -pOption (Eigenschaft), um die Ausgabe auf Informationen zum Sitzungstyp zu beschränken, und verwenden die –valueOption, um den Wert ohne die Bezeichnung „Type=“ anzuzeigen.
Auf einem Computer mit Wayland sehen Sie:
Wenn Sie das X Window-System ausführen, sehen Sie:
Sollten Sie Wayland oder X11 verwenden?
Sofern Sie keine Probleme haben, können Sie genauso gut bei dem bleiben, was Sie bereits verwenden. Wenn Sie jedoch Instabilitäten oder ruckartige Bildschirmaktualisierungen bemerken, können Sie versuchen, zu dem zu wechseln, was Sie nicht verwenden.
Wenn Sie unter GNOME wechseln und das andere System ausprobieren möchten, klicken Sie auf dem Anmeldebildschirm auf Ihren Benutzernamen und dann auf das Zahnradsymbol in der unteren rechten Ecke des Bildschirms.
Ein Menü bietet Ihnen verschiedene Versionen von GNOME. Optionen, die „Xorg“ erwähnen, verwenden das X Window System und solche, die es nicht erwähnen, verwenden Wayland.