Nach vier Monaten der Entwicklung wurde eine stabile Version des Protokolls, des Interprozesskommunikationsmechanismus und der Wayland-Bibliotheken 1.26 vorgestellt. Der Branch 1.26 ist auf API- und ABI-Ebene mit den Versionen 1.x rückwärtskompatibel und enthält hauptsächlich Fehlerbehebungen sowie geringfügige Protokollaktualisierungen. Die Entwicklungen des Projekts werden unter der MIT-Lizenz verbreitet. Der Referenz-Kompositor-Server Weston, der Code und Arbeitsbeispiele für die Nutzung von Wayland in Desktop-Umgebungen und eingebetteten Lösungen bereitstellt, entwickelt sich in einem separaten Entwicklungszyklus weiter.
Wichtige Änderungen im Protokoll:
- Das Ereignis wl_pointer.warp wurde hinzugefügt, über das Benachrichtigungen über die neue Position des Zeigers ohne Verarbeitung des vom Benutzer generierten Ereignisses wl_pointer.motion empfangen werden können.
- Die Anfrage wl_fixes.ack_global_remove wurde hinzugefügt, die dazu dient, dem Kompositor zu bestätigen, dass der Client die Verarbeitung des Ereignisses eingestellt hat, um einen Wettlaufzustand beim Entfernen globaler Ereignisse zu vermeiden. Nach Erhalt der Bestätigung von allen Clients kann der Kompositor den mit dem Ereignis verbundenen Handler auf seiner Seite entfernen.
- Die Funktion wl_display_remove_socket_fd() wurde hinzugefügt, um Sockets zu entfernen, die zuvor über den Aufruf wl_display_add_socket_fd() hinzugefügt wurden.
- Im Debugging-Modus WAYLAND_DEBUG wird die Log-Ausgabe mit Zeitstempeln im Format „HH:MM:ss.xxxxxx“ bereitgestellt, was die Analyse und den Vergleich von Logs erleichtert.
Nach der letzten Veröffentlichung von Wayland hinzugefügte Protokollerweiterungen, die das Basisprotokoll Wayland ergänzen und in einem separaten Set von Wayland-Protocols bereitgestellt werden:
- xx-fractional-scale — zur Skalierung des Systems logischer Koordinaten, deren Werte in ganzen Zahlen angegeben werden, um die Genauigkeit der Positionierung zu erhöhen und die Auflösung der logischen Koordinaten auf Einzelpixel zu verbessern. Diese Funktion adressiert das Problem der begrenzten Auflösung des Systems logischer Koordinaten, die für die Positionierung auf Einzelpixel-Ebene, welche für die vollständige Umsetzung der fractional scaling erforderlich ist, nicht ausreichend ist.
- xx-cutouts — zur Erfassung von Informationen über Ausschnitte auf dem Bildschirm (z. B. Bereiche unter der Frontkamera auf dem Smartphone-Bildschirm).
- xx-zones — zur Erstellung und Hinzufügung von Top-Level-Fenstern in „Zonen“ — Umgebungen mit eigenem Koordinatensystem. Das Protokoll ermöglicht eine logische Anordnung der Fenster, wobei jedes Fenster in Bezug auf ein anderes Fenster platziert wird.
- xx-keyboard-filter — zur Abfangen von vom Client ausgewählten Tastaturereignissen, Ändern von Eingaben oder Blockieren der Übertragung bestimmter Ereignisse zu einer Wayland-Oberfläche, auf der der Fokus liegt.
- Das Protokoll xdg-session-management wurde zur Kategorie „staging“ hinzugefügt, welches die Möglichkeit bietet, den Zustand und die Position von Fenstern einer unterbrochenen Sitzung in Umgebungen, die auf dem Wayland-Protokoll basieren, wiederherzustellen, beispielsweise nach einem unerwarteten Absturz des Compositing-Servers oder der Anwendung.
- Im Protokoll „linux-dmabuf“ wurde Unterstützung für Systeme mit mehreren GPUs hinzugefügt. In solchen Systemen kann der Client mit dem Kompositionsserver abstimmen, welche GPU verwendet werden soll.
- Im Protokoll color-management-v1 wurde Unterstützung für Metadaten von Bildern im BT.2100-Format hinzugefügt, um spezifische Handler im Kompositionsserver anzuwenden, die eine korrekte Anzeige von HDR-Inhalten ermöglichen, die für Windows erstellt wurden.
Die auffälligsten Ereignisse, die mit Wayland in Zusammenhang stehen und seit der Veröffentlichung der letzten Version aufgetreten sind:
- In Cinnamon wurde vollständige Unterstützung für Wayland implementiert.
- In die ANGLE-Bibliothek, die in Chrome und Android verwendet wird, wurde Unterstützung für Wayland integriert.
- In KDE wird bei Verwendung von Wayland die Unterstützung für das Wiederherstellen von Sitzungen implementiert, und das Wayland-Protokoll xx-fractional-scale-v2 für skalierte Darstellungen wird bereitgestellt.
- Ein Port des X.Org-Treibers Synaptics wurde für Umgebungen auf Basis von Wayland erstellt.
- Die Vorbereitung der VFX- und Animationsplattformen auf den Wechsel von X11 zu Wayland wurde initiiert.
- Das Testen des Composite-Servers Xfwl4 aus dem Xfce-Projekt hat begonnen.
- Auf Basis von Wayfire und Libadwaita wurde eine Benutzeroberfläche ähnlich Unity neu erstellt.
- Die Composite-Server 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.
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 im X.Org-Server, da es im Gegensatz zu letzterem die Eingabe und Ausgabe für jedes Fenster isoliert, den Zugriff eines Clients auf den Inhalt anderer Fenster verhindert und auch das Abfangen von mit anderen Fenstern verbundenen Eingabeereignissen untersagt (im XLibre XServer wird die X11-Erweiterung Xnamespace implementiert, die die Isolierung von Clients durch Namensraumtrennung ermöglicht). Die Unterstützung für die direkte Arbeit mit Wayland ist für die meisten in Linux verwendeten Grafikbibliotheken realisiert, einschließlich GTK, Qt, SDL, FLTK, wxWidgets, Clutter und EFL (Enlightenment Foundation Library).
Die Interaktion mit der Hardware in Wayland/Weston, wie z.B. die Durchführung von Initialisierungen, das Wechseln der 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 erfolgen, das auf Kernel-Ebene arbeitet, was es ermöglicht, ohne Superuser-Rechte auszukommen. Für die Ausführung herkömmlicher X11-Anwendungen in einer Umgebung auf Basis von Wayland wird die DDX-Komponente XWayland (Device-Dependent X) verwendet, die in ihrer Funktionsweise Xwin und Xquartz für die Plattformen Win32 und macOS ähnelt.
Quelle: opennet.ru
