Nach mehr als einem Jahr Entwicklung wurde die stabile Version des Protokolls, des Mechanismus der interprozesslichen Kommunikation und der Bibliotheken Wayland 1.23 veröffentlicht. Der Branch 1.23 ist API- und ABI-kompatibel mit den 1.x-Versionen und enthält hauptsächlich Fehlerbehebungen und kleinere Protokollaktualisierungen. Die Ergebnisse des Projekts werden unter der MIT-Lizenz verbreitet. 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.
Wichtige Ä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 Basis-Maximalgröße des Puffers wird über die Schnittstelle wl_display festgelegt, und die neue API erlaubt es den Clients, sie in Bezug auf jede Client-Verbindung zu ändern. Praktisch ermöglicht diese Änderung die Verwendung größerer Puffer in spezifischen Wayland-Clients, wie Xwayland, die eine hohe Eingabeereignisintensität aufweisen.
- Für Anfragen (request), Ereignisse (event) und Aufzählungen (enum) wurde die Möglichkeit hinzugefügt, das XML-Attribut „deprecated-since“ zur Markierung veralteter Elemente zu verwenden. In der Terminologie von Wayland sind Anfragen Nachrichten, die vom Client an Server; Ereignisse sind Nachrichten, die vom Server an den Client gesendet werden; Aufzählungen sind mit einem bestimmten Namen verbundene Mengen von numerischen Werten, mit denen das Protokoll arbeitet.
- Im Tool wayland-scanner, das für die Generierung von Header-Dateien und Code in C auf der Grundlage von XML-Dateien mit Protokollbeschreibungen vorgesehen ist, wurde der Modus „enum-header“ hinzugefügt, der das Einfügen von „Aufzählungen“ in die Header-Dateien ermöglicht.
- In wayland-scanner wurde die Generierung von Validierungsfunktionen (validator) für „Aufzählungen“ auf der Serverseite sichergestellt.
- Die Möglichkeit, Ereigniswarteschlangen 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, um das Anheften beliebiger Daten an den Client zu erleichtern.
- Die Anfrage wl_shm.release wurde hinzugefügt, die es dem Client ermöglicht, den Server über die Einstellung einer geteilten Ressource zu informieren, sodass der Server den damit verbundenen Speicher freigeben kann.
- Unterstützung der OpenBSD-Plattform hinzugefügt.
Mit Wayland verbundene Ereignisse seit der Veröffentlichung der letzten Version:
- XWayland 24.1.0 wurde veröffentlicht mit Unterstützung für die Technologie Explicit Sync und Verbesserungen in der Unterstützung der 2D-Beschleunigungsarchitekturen GLAMOR und EXA.
- Ein Update des Kompositservers labwc (Lab Wayland Compositor) mit Funktionen, die an den Fenster-Manager Openbox erinnern.
- Das Projekt wprs, das einen Sitzungsmanager für Wayland entwickelt, der ähnlich wie das Tool screen, jedoch für grafische Anwendungen ist.
- Die Veröffentlichung des Kompositservers Niri, der Wayland verwendet und eine Methode zur kachelartigen (tiling) Anordnung mit Gruppierung von Fenstern in einem unendlich scrollbaren Streifen auf dem Bildschirm anbietet.
- Ein Update der Wayland-Protocols und Erweiterungen: 1.34, 1.33, 1.32, 1.35.
- Die Entwicklung der SDL3-Bibliothek, die Wayland standardmäßig verwendet.
- Die 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 Programm-Launcher (Runner), in der Paneloberfläche, im Abmelde-Interface, im LXQt-Einstellungs-Interface und in den meisten Anwendungen.
- Die Veröffentlichung der Benutzerumgebung Sway 1.9, die Wayland verwendet.
- Ein neuer Kompositmanager miracle-wm, der auf Wayland und Komponenten zum Aufbau von Kompositmanagern Mir basiert.
- Louvre – eine neue Bibliothek für die Entwicklung von Kompositern 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.
- Die Distribution Lubuntu wechselt zur Verwendung von Qt 6 und Wayland.
- In KDE 6 wird standardmäßig eine Sitzung angeboten, die das Wayland-Protokoll verwendet. Unterstützung für Wayland-Erweiterungen zur Farbverwaltung wurde implementiert.
- In der Electron-Plattform wurde ein Fensterdekormodus für Wayland integriert.
- Ein Update des Kompositservers 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 der IDE IntelliJ und OpenJDK.
- Wayland-Unterstützung im Texteditor GNU Emacs.
- In GNOME wird in der Wayland-Sitzung die Unterstützung des Software-KVM-Switches Input Leap implementiert, der es ermöglicht, eine Tastatur und eine Maus zur Steuerung mehrerer Computer zu verwenden.
- Die Fedora-Version mit KDE-Desktop hat die Unterstützung für die X11-basierten Sitzungen in der Basisversion eingestellt.
- Die Unterstützung von Wayland in proprietären NVIDIA-Treibern wurde verbessert.
- Ein Treiber wurde implementiert, der die Verwendung von Wine in Umgebungen mit dem Wayland-Protokoll ohne Einsatz von XWayland und X11-Komponenten ermöglicht.
- Die Version des Compositing-Servers Weston 13.0 wurde veröffentlicht.
- Für die Testung der Funktionalität von KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce und Sway unter Wayland wird ein spezielles Live-Distribution Rebecca Black Linux herausgegeben.
- In den Linux-Bauten von Firefox ist standardmäßig die Verwendung des Compositing-Servers Wayland anstelle von XWayland aktiviert. Es besteht die Möglichkeit, Builds zu erstellen, die nur im Wayland arbeiten.
Wayland ist ein Protokoll, das die Interaktion zwischen dem Compositor und den darauf laufenden Anwendungen regelt. Die Clients zeichnen ihre Fenster eigenständig in separaten Puffern und übermitteln Änderungsinformationen an den Compositor. Dieser kombiniert die Inhalte der einzelnen Anwendungs-Puffer zu einer endgültigen Ausgabe, wobei er Aspekte wie Fensterüberlappung und Transparenz berücksichtigt. Mit anderen Worten, der Compositor stellt keine API zur Verfügung, um einzelne Elemente zu zeichnen, sondern arbeitet ausschließlich mit bereits erstellten Fenstern. Dadurch entfällt die doppelte Pufferung beim Einsatz von hochrangigen Bibliotheken wie GTK und Qt, die für das Layout der Fensterinhalte zuständig sind.
Wayland löst viele Sicherheitsprobleme von X11, da es im Gegensatz zu letzterem die Eingabe und Ausgabe für jedes Fenster isoliert, es dem Client nicht erlaubt, auf den Inhalt der Fenster anderer Clients zuzugreifen, und die Abfangung von Eingabeereignissen, die mit anderen Fenstern verbunden sind, verhindert. Derzeit wird die direkte Unterstützung von Wayland bereits für die Bibliotheken GTK, Qt, SDL (seit Version 2.0.2), Clutter und EFL (Enlightenment Foundation Library) umgesetzt. Ab Qt 5.4 ist das Modul QtWayland mit Implementierungen für die Ausführung von Qt-Anwendungen in der Umgebung des von dem Wayland-Projekt entwickelten Compositing-Servers Weston enthalten.
Die Interaktion mit der Hardware in Wayland/Weston, z. B. die Durchführung von Initialisierungen, das Umschalten von Video-Modi (drm modesetting) und die Speicherverwaltung (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 Compositing-Server Weston kann nicht nur mit dem DRM-Modul des Linux-Kernels, sondern auch über X11, einen anderen Wayland-Compositing-Server, Framebuffer und RDP betrieben werden. Darüber hinaus werden Projekte entwickelt, um die Funktionalität über den Grafik-Stack der Android-Plattform zu gewährleisten.
Im Rahmen des Weston-Projekts wird eine der Implementierungen des Compositing-Servers entwickelt. Jeder andere Produkt, der das Wayland-Protokoll unterstützt, kann ebenfalls als Compositing-Server fungieren. Derzeit wird beispielsweise daran gearbeitet, Wayland in KWin zu unterstützen. In seiner derzeitigen Form hat Weston bereits die Grenzen eines Sammlung von Testbeispielen für das Wayland-Protokoll überschritten und kann durch Plugins und Erweiterungen funktional erweitert werden. Benutzeroberflächen und erweiterte Fensterverwaltungsfunktionen werden als externe Backends zu Weston umgesetzt. Um die Ausführung gewöhnlicher X11-Anwendungen in einer Umgebung auf Basis von Wayland zu ermöglichen, wird die DDX-Komponente XWayland (Device-Dependent X) verwendet, die in ihrer Arbeitsorganisation Xwin und Xquartz für die Plattformen Win32 und macOS ähnelt.


Quelle: opennet.ru
