Nach viermonatiger Entwicklung wurde die stabile Version des Protokolls, des Mechanismus zur Interprozesskommunikation und der Wayland-Bibliotheken 1.26 veröffentlicht. Der Branch 1.26 ist API- und ABI-kompatibel mit den Veröffentlichungen 1.x und enthält hauptsächlich Fehlerbehebungen sowie geringfügige Aktualisierungen des Protokolls. Die Arbeiten des Projekts werden unter der MIT-Lizenz verbreitet. Der Referenzkompositormanager Server Weston, der Code und Arbeitsbeispiele für die Verwendung von Wayland in Desktop-Umgebungen und eingebetteten Lösungen bereitstellt, entwickelt sich im Rahmen eines separaten Entwicklungszyklus.
Hauptänderungen im Protokoll:
- Ein Ereignis wl_pointer.warp wurde hinzugefügt, über das Benachrichtigungen über die neue Position des Zeigers ohne die Verarbeitung des Ereignisses wl_pointer.motion, das bei Benutzeraktivität erzeugt wird, empfangen werden können.
- Der Request wl_fixes.ack_global_remove wurde hinzugefügt, um dem Kompositormanager zu bestätigen, dass der Client die Verarbeitung des Ereignisses eingestellt hat, um einen Wettlaufzustand beim Entfernen globaler Ereignisse zu vermeiden. Nachdem alle Clients eine Bestätigung erhalten haben, kann der Kompositormanager den zugehörigen Ereignis-Handler auf seiner Seite entfernen.
- Die Funktion wl_display_remove_socket_fd() wurde hinzugefügt, um Sockets zu entfernen, die zuvor über den Call wl_display_add_socket_fd() hinzugefügt wurden.
- Im Debug-Modus WAYLAND_DEBUG wird im Log die Zeit im Format „HH:MM:ss.xxxxxx“ angezeigt, was das Analysieren und Vergleichen von Logs vereinfacht.
Nach der letzten Veröffentlichung von Wayland hinzugefügte Protokollerweiterungen, die das Basiskonzept von Wayland ergänzen und in einem separaten Set namens Wayland-Protocols bereitgestellt werden:
- xx-fractional-scale – zur Skalierung des Systems von logischen Koordinaten, deren Werte als ganze Zahlen angegeben werden, um die Genauigkeit der Positionierung zu erhöhen und die Auflösung der logischen Koordinaten auf einzelne Pixel zu steigern. Diese Funktionalität löst das Problem der begrenzten Auflösung des Systems von logischen Koordinaten, das für die Positionierung auf der Ebene einzelner Pixel, die für eine vollständige Implementierung des fractional scaling erforderlich ist, nicht ausreicht.
- xx-cutouts – um Informationen über Ausschnitte auf dem Bildschirm (z.B. Bereiche für die Frontkamera auf dem Bildschirm eines Smartphones) zu erhalten.
- xx-zones – zum Erstellen und Hinzufügen von obersten Fenstern in "Zonen" – Umgebungen mit eigenen Koordinatenräumen. Das Protokoll ermöglicht die logische Anordnung von Fenstern, bei der jedes Fenster relativ zu einem anderen Fenster positioniert wird.
- xx-keyboard-filter – zum Abfangen ausgewählter Tastaturereignisse durch den Client, zur Änderung von Eingabeereignissen oder zur Blockierung der Übertragung bestimmter Ereignisse an die Wayland-Oberfläche, auf der der Eingabefokus liegt.
- Dem Bereich „staging“ wurde das Protokoll xdg-session-management hinzugefügt, das Funktionen für die Wiederherstellung des Zustands und der Position von Fenstern einer unterbrochenen Sitzung in Umgebungen auf Basis des Wayland-Protokolls bietet, beispielsweise nach einem Absturz des Compositors Server oder der Anwendung.
- Das Protokoll „linux-dmabuf“ hat die Unterstützung für den Betrieb auf Systemen mit mehreren GPUs erweitert. Auf solchen Systemen kann der Client mit den Compositors abstimmen, Server welche GPU verwendet werden soll.
- Das Protokoll color-management-v1 hat die Unterstützung für Bildmetadaten im BT.2100-Format integriert, um spezifische Handler für die korrekte Anzeige von HDR-Inhalten, die für Windows erstellt wurden, in Compositors anzuwenden. Server spezifische Handler, die eine korrekte Anzeige von für Windows erstelltem HDR-Inhalt ermöglichen.
Die bemerkenswertesten Ereignisse, die mit Wayland in Verbindung stehen und nach der Veröffentlichung der letzten Version aufgetreten sind:
- Cinnamon hat vollständige Unterstützung für Wayland umgesetzt.
- In die ANGLE-Bibliothek, die in Chrome und Android verwendet wird, wurde Unterstützung für Wayland hinzugefügt.
- In KDE wurde die Unterstützung für die Wiederherstellung von Sitzungen unter Verwendung von Wayland implementiert, ebenso wurde das Wayland-Protokoll xx-fractional-scale-v2 für eine fractional Scale realisiert.
- Ein Port des X.Org-Treibers Synaptics für Umgebungen auf Basis von Wayland wurde erstellt.
- Es wurde eine Überprüfung der Bereitschaft von VFX- und Animationsplattformen zur Ablösung von X11 durch Wayland initiiert.
- Die Tests des Composite-Servers Xfwl4 vom Xfce-Projekt haben begonnen.
- Auf Basis von Wayfire und Libadwaita wurde die Benutzeroberfläche Unity nachgestellt.
- Die Compositors und Desktop-Umgebungen wurden aktualisiert: COSMIC 1.3.0, Weston 16, Phosh 0.56, Nourish 1.0.0, miracle-wm 0.10, KDE Plasma 6.7, labwc 0.20, Sway 1.2, Wayland Maker 0.8, Hyprland 0.55, Niri 26.04, LXQt 2.4.0, Cage 0.3.
Wir erinnern daran, dass Wayland ein Protokoll für die Interaktion zwischen dem Compositor und den mit ihm verbundenen Anwendungen darstellt. Die Clients führen die Darstellung ihrer Fenster selbst in einem separaten Puffer aus und übermitteln Informationen über Änderungen an den Compositor. zu einem Server, der den Inhalt der Puffer einzelner Anwendungen kombiniert, um eine endgültige Ausgabe unter Berücksichtigung möglicher Nuancen wie Überlappung von Fenstern und Transparenz zu erstellen. Mit anderen Worten, der Kompositserver bietet keine API zum Zeichnen einzelner Elemente, sondern arbeitet nur mit bereits formatierten Fenstern, was die doppelte Pufferung bei der Verwendung von hochgradigen Bibliotheken wie GTK und Qt überflüssig macht, die die Formatierung des Fensterinhalts übernehmen.
Wayland löst viele Sicherheitsprobleme von X11 im X.Org Server, da es im Gegensatz zu letzterem die Eingabe und Ausgabe für jedes Fenster isoliert, es dem Client nicht erlaubt, auf den Inhalt anderer Clients zuzugreifen, und es verhindert, dass Eingabeveranstaltungen, die mit anderen Fenstern verbunden sind, abgefangen werden (im XLibre XServer ist das X11-Erweiterung Xnamespace implementiert, das die Isolation von Clients durch Namensraumtrennung ermöglicht). Die Unterstützung für die direkte Arbeit mit Wayland ist für die meisten in Linux verwendeten grafischen Bibliotheken, einschließlich GTK, Qt, SDL, FLTK, wxWidgets, Clutter und EFL (Enlightenment Foundation Library), verfügbar.
Die Interaktion mit der Hardware in Wayland/Weston, wie z.B. 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, das auf Kernel-Ebene arbeitet, erfolgen, was es ermöglicht, ohne Superuser-Rechte auszukommen. Um die Ausführung herkömmlicher X11-Anwendungen in einer Wayland-basierten Umgebung zu ermöglichen, wird die DDX-Komponente XWayland (Device-Dependent X) verwendet, die hinsichtlich ihrer Funktionsweise Xwin und Xquartz für die Plattformen Win32 und macOS ähnelt.
Quelle: opennet.ru
