Nach mehr als einem Jahr Entwicklungsarbeit wurde die stabile Version des Protokolls, des Mechanismus für die interprozessliche Kommunikation und der Bibliotheken Wayland 1.23 veröffentlicht. Der Branch 1.23 ist auf API- und ABI-Ebene abwärtskompatibel mit den Versionen 1.x und enthält hauptsächlich Fehlerbehebungen sowie geringfügige Protokollaktualisierungen. Die Ergebnisse des Projekts stehen unter der MIT-Lizenz. Der Referenzkompositserver Weston, der Code und Arbeitsbeispiele für die Nutzung von Wayland in Desktop-Umgebungen und eingebetteten Lösungen bereitstellt, wird im Rahmen eines separaten Entwicklungszyklus weiterentwickelt.
Hauptänderungen im Protokoll:
- In libwayland wurde eine API implementiert, die es dem Client ermöglicht, die maximale Größe des internen Verbindungs-Puffers auf der Serverseite zu bestimmen. Die grundlegende maximale Puffergröße wird über die Schnittstelle wl_display festgelegt, während die neue API es den Clients erlaubt, diese in Abhängigkeit von jeder Client-Verbindung zu ändern. Praktisch gesehen ermöglicht diese Änderung die Verwendung größerer Puffer in spezialisierte Wayland-Clients wie Xwayland, die eine höhere Ereignisintensität aufweisen.
- Für Anfragen (request), Ereignisse (event) und Aufzählungen (enum) besteht die Möglichkeit, das XML-Attribut „deprecated-since“ zu verwenden, um veraltete Elemente zu kennzeichnen. In der Terminologie von Wayland sind Anfragen Nachrichten, die vom Client gesendet werden an zu einem Server; Ereignisse sind Nachrichten, die vom Server an den Client gesendet werden; Aufzählungen sind mit einem bestimmten Namen verbundene Mengen numerischer Werte, mit denen das Protokoll arbeitet.
- Im Tool wayland-scanner, das zum Generieren von Header-Dateien und C-Code auf Basis von XML-Dateien mit Protokollbeschreibungen dient, wurde der Modus „enum-header“ hinzugefügt, der die Angabe in Header-Dateien ausschließlich von „Aufzählungen“ umfasst.
- Im wayland-scanner wurde die Generierung von Überprüfungsfunktionen (validator) für „Aufzählungen“ auf der Serverseite sichergestellt.
- Die Möglichkeit, Warteschlangen von Ereignissen Namen zuzuweisen, wurde hinzugefügt, um das Debugging zu erleichtern.
- Die Funktionen wl_client_get_user_data() und wl_client_set_user_data() wurden hinzugefügt, die das Anheften beliebiger Daten an den Client erleichtern.
- Die Anfrage wl_shm.release wurde hinzugefügt, die es dem Client ermöglicht, den Server über die Beendigung der Nutzung eines gemeinsamen Objekts zu informieren, sodass der Server den damit verbundenen Speicher freigeben kann.
- Die Unterstützung für die Plattform OpenBSD wurde hinzugefügt.
Mit Wayland verbundene Ereignisse, die seit der Veröffentlichung der letzten Ausgabe stattgefunden haben:
- XWayland 24.1.0 wurde veröffentlicht, das die Explicit Sync-Technologie unterstützt und die Unterstützung für die 2D-Beschleunigungsarchitekturen GLAMOR und EXA verbessert.
- Aktualisierung des Composite-Servers labwc (Lab Wayland Compositor) mit Funktionen, die an den Fenstermanager Openbox erinnern.
- Projekt wprs, das für Wayland einen Sitzungsmanager entwickelt, der ähnlich wie das Dienstprogramm screen, aber für grafische Anwendungen ist.
- Veröffentlichung des Composite-Servers Niri, der Wayland nutzt und eine Kachelkomposition (tiling) mit der Gruppierung von Fenstern in einer endlos scrollbaren Leiste auf dem Bildschirm bietet.
- Aktualisierung des Protokoll- und Erweiterungssets Wayland-Protocols: 1.34, 1.33, 1.32, 1.35.
- Entwicklung der Bibliothek SDL3, die Wayland standardmäßig verwendet.
- Veröffentlichung der Desktop-Umgebung LXQt 2.0.0 mit Unterstützung für Wayland im Dateimanager PCManFM-Qt, im Benachrichtigungssystem, auf dem Desktop, im Programmstarter (Runner), der Leiste, der Abmeldeoberfläche, der LXQt-Einstellungsoberfläche und den meisten Anwendungen.
- Release der Benutzerumgebung Sway 1.9, die Wayland verwendet.
- Neuer Composite-Manager miracle-wm, der auf Wayland und Komponenten für den Bau von Composite-Managern Mir basiert.
- Louvre – eine neue Bibliothek zur Entwicklung von Composite- Server basierend auf Wayland.
- Arbeiten zur Implementierung der Wayland-Unterstützung in Xfce.
- Erste Unterstützung für Wayland in der Desktop-Umgebung Budgie.
- Erste Unterstützung für Wayland in der Desktop-Umgebung Cinnamon.
- Das Portieren des MATE-Desktops für Wayland ist fast abgeschlossen.
- Das Betriebssystem Lubuntu wechselt zur Verwendung von Qt 6 und Wayland.
- In KDE 6 wird standardmäßig eine Sitzung angeboten, die das Wayland-Protokoll verwendet. Wayland-Erweiterungen zur Farbanpassung wurden implementiert.
- In der Electron-Plattform wurde ein Fensterdekorationsmodus für Wayland integriert.
- Aktualisierung des Composite-Servers Wayfire, der Wayland verwendet und die Gestaltung von Benutzeroberflächen mit 3D-Effekten im Stil von 3D-Plugins für Compiz ermöglicht.
- Wayland-Unterstützung in den IDEs IntelliJ und OpenJDK.
- Wayland-Unterstützung im Texteditor GNU Emacs.
- In GNOME wurde in der Sitzung auf Basis von Wayland die Unterstützung für den Software-KVM-Switch Input Leap implementiert, der es ermöglicht, eine Tastatur und Maus zur Steuerung mehrerer Computer zu verwenden.
- Die Fedora-Edition mit dem Desktop KDE hat die Unterstützung für Sitzungen auf Basis des X11-Protokolls in der Basisversion eingestellt.
- Die Unterstützung von Wayland-basierten Umgebungen in proprietären NVIDIA-Treibern wurde verbessert.
- Ein Treiber wurde implementiert, der die Verwendung von Wine in Wayland-basierten Umgebungen ohne XWayland und X11-Komponenten ermöglicht.
- Die Ausgabe des Komposit-Servers Weston 13.0 wurde erstellt.
- Zur Testung der Funktionalität von KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce und Sway über Wayland wird ein spezielles Live-Distribution namens Rebecca Black Linux veröffentlicht.
- In den Linux-Versionen von Firefox ist standardmäßig die Verwendung des Komposit-Servers Wayland anstelle von XWayland aktiviert. Es besteht die Möglichkeit, Builds zu erstellen, die ausschließlich die Arbeit in Wayland unterstützen.
Wir erinnern daran, dass Wayland ein Protokoll für die Interaktion zwischen einem Kompositionserver und den mit ihm arbeitenden Anwendungen darstellt. Clients führen die Darstellung ihrer Fenster in einem separaten Puffer selbst durch und übermitteln Informationen über Aktualisierungen an den Kompositionserver, der den Inhalt der einzelnen Anwendungs-Puffer kombiniert, um die endgültige Ausgabe unter Berücksichtigung möglicher Nuancen wie Fensterüberlappung und Transparenz zu erzeugen. Mit anderen Worten, der Kompositionserver stellt keine API zur Verfügung, um einzelne Elemente zu zeichnen, sondern arbeitet nur mit bereits formatierten Fenstern, was eine doppelte Pufferung bei der Verwendung von hochrangigen Bibliotheken wie GTK und Qt, die sich um die Anordnung des Fensterinhalts kümmern, vermeidet.
Wayland behebt viele Sicherheitsprobleme von X11, da es im Gegensatz zu diesem die Eingaben und Ausgaben für jedes Fenster isoliert, es dem Client nicht erlaubt, auf den Inhalt anderer Fenster zuzugreifen, und keine Eingabeereignisse von anderen Fenstern abfängt. Derzeit wird die direkte Unterstützung für die Nutzung von Wayland bereits für die Bibliotheken GTK, Qt, SDL (seit Version 2.0.2), Clutter und EFL (Enlightenment Foundation Library) implementiert. Ab Qt 5.4 ist das QtWayland-Modul in das Paket aufgenommen, das Komponenten zur Unterstützung von Qt-Anwendungen in der Umgebung des Komposit-Servers Weston, der vom Wayland-Projekt entwickelt wird, bereitstellt.
Die Interaktion mit Hardware in Wayland/Weston, wie die Durchführung von Initialisierungen, das Umschalten von Video-Modi (drm modesetting) und das Speichermanagement (GEM für i915 und TTM für Radeon und Nouveau) von Grafikkarten, kann direkt über ein Modul auf Kernel-Ebene erfolgen, was es ermöglicht, auf Superuser-Rechte zu verzichten. Der Komposit-Server Weston kann nicht nur mit dem DRM-Kernel-Modul von Linux arbeiten, sondern auch über X11, einen anderen Wayland-Komposit-Server, einen Framebuffer und RDP. Zudem werden Projekte zur Arbeit über den grafischen Stack der Android-Plattform entwickelt.
Im Rahmen des Projekts wird Weston weiterentwickelt, und es entsteht eine Implementierung eines kompositen Servers. Auch jedes andere Produkt, das das Wayland-Protokoll unterstützt, kann als kompositer Server fungieren. Zum Beispiel wird derzeit an der Unterstützung von Wayland in KWin gearbeitet. In seiner aktuellen Form hat Weston bereits den Rahmen einer Testumgebung für das Wayland-Protokoll verlassen und kann durch Plugins und Erweiterungen an Funktionalität gewinnen. Benutzeroberflächen und erweiterte Fensterverwaltungsfunktionen sollten in Form externer Backends zu Weston implementiert werden. Für die Ausführung herkömmlicher X11-Anwendungen in einer Umgebung basierend auf Wayland wird die DDX-Komponente XWayland (Device-Dependent X) verwendet, die ähnlich organisiert ist wie Xwin und Xquartz für die Plattformen Win32 und macOS.


Quelle: opennet.ru
