Po ośmiu miesiącach prac zaprezentowano stabilną wersję protokołu, mechanizmu komunikacji międzyprocesowej i bibliotek Wayland 1.25. Gałąź 1.25 jest wstecznie kompatybilna na poziomie API i ABI z wydaniami 1.x i zawiera głównie poprawki błędów oraz drobne aktualizacje protokołu. Osiągnięcia projektu są rozpowszechniane na licencji MIT. Referencyjny serwer kompozytowy Weston, dostarczający kod i przykłady do zastosowania Wayland w środowiskach desktopowych i w rozwiązaniach wbudowanych, rozwija się w ramach osobnego cyklu rozwoju.
Główne zmiany w protokole:
- Dokumentacja została przekształcona z formatu DocBook do mdBook (Markdown).
- W pełni udokumentowane są dialekt Wayland XML, model aktualizacji treści oraz możliwości zarządzania kolorem.
- Dodano nowy atrybut "frozen" dla interfejsów z wieloma interfejsami nadrzędnymi.
- Dodane nowe zapytanie wl_surface.get_release do otrzymywania powiadomienia o zwolnieniu bufora, dołączonego przez klienta przez wl_surface.attach. W odróżnieniu od wl_buffer.release, w wl_surface.get_release powiadomienie jest powiązane z konkretnym momentem renderowania.
- Dodano funkcję wl_display_dispatch_pending_single(), umożliwiającą pobranie z kolejki zdarzeń i przetworzenie tylko jednego zdarzenia, a nie wszystkich zgromadzonych zdarzeń, jak to ma miejsce w przypadku wl_display_dispatch_pending().
- Zapewniono kolorowanie wyjścia debugowego WAYLAND_DEBUG.
Dodane od momentu wydania Wayland 1.25 rozszerzenia protokołów, uzupełniające podstawowy protokół Wayland i dostarczane w oddzielnym zestawie Wayland-Protocols:
- xx-input-method — umożliwia aplikacjom wdrażanie metod wprowadzania tekstu dla kompozytów. serwerów i formować wprowadzony tekst, co może być stosowane na przykład do tworzenia wirtualnych klawiatur i warstw IME (Input Method Editor) do przetwarzania wejścia.
- xx-text-input — umożliwia serwerom kompozytowym implementację metod wejścia i wysyłanie tekstu do aplikacji. Protokół standaryzuje interakcję między kompozytowym serwerem i aplikacjami, a także pozwala zarządzać takimi funkcjami jak przesyłanie wprowadzonego tekstu, przetwarzanie zdarzeń związanych ze zmianą fokusu wejścia i uwzględnianie specyfiki pól wejściowych (język, zaznaczenie tekstu, typ treści).
- Poprawione protokoły color-management-v1 i color-representation-v1, zapewniające możliwości zarządzania kolorem, wsparcia HDR oraz określenia przedstawienia kolorów powierzchni Wayland.
Najbardziej zauważalne wydarzenia związane z Wayland, które miały miejsce od publikacji ostatniego wydania:
- W GNOME 50 usunięto wsparcie dla X11. W KDE Plasma 6.8 zdecydowano o zaprzestaniu wsparcia dla X11.
- JetBrains przekształca IDE IntelliJ w domyślnie korzystające z Wayland.
- Xfce ogłosiło serwer kompozytowy Xfwl4, korzystający z Wayland.
- Środowisko pulpitu Budgie 10.10 zostało przekształcone na Wayland.
- QNX Developer Desktop oparty na Wayland.
- Marathon OS — mobilny system operacyjny oparty na Wayland.
- Wydanie Wayback, warstwy do uruchamiania pulpitów X11, używających komponentów Wayland.
- W Cinnamon dodano opcjonalną możliwość instalacji plików sesyjnych dla Wayland oraz zrealizowano możliwość przełączania układu klawiatury podczas korzystania z Wayland.
- W sterowniku wine, podczas pracy w środowiskach opartych na Wayland, wprowadzono wsparcie dla schowka, metod wprowadzania, okien nieprostokątnych oraz przezroczystości.
- W Cairo-Dock dodano wsparcie dla Wayland.
- Aktualizacja serwerów kompozytowych: Weston 15.0, River 0.4.0, Hyprland 0.54, labwc 0.9.4, Niri 25.11, miracle-wm 0.8, Wayfire 0.10, wlmaker 0.6, labwc 0.9.0.
Przypominamy, że Wayland jest protokołem interakcji kompozytowego serwera i aplikacji z nim współpracujących. Klienci samodzielnie wykonują rysowanie swoich okien w oddzielnym buforze, przekazując informacje o aktualizacjach kompozytorowi. serwera, который łączy zawartość buforów poszczególnych aplikacji w celu utworzenia ostatecznego wyjścia z uwzględnieniem różnych szczegółów, takich jak nakładanie okien i przezroczystość. Innymi słowy, serwer kompozytowy nie udostępnia API do renderowania poszczególnych elementów, lecz operuje wyłącznie na już utworzonych oknach, co pozwala na wyeliminowanie podwójnego buforowania przy użyciu wysokopoziomowych bibliotek, takich jak GTK i Qt, które zajmują się kompozycją zawartości okien.
Wayland rozwiązuje wiele problemów związanych z bezpieczeństwem X11, ponieważ w przeciwieństwie do ostatniego izoluje wejścia i wyjścia dla każdego okna, uniemożliwia klientowi dostęp do zawartości okien innych klientów oraz nie pozwala na przechwytywanie zdarzeń wejściowych związanych z innymi oknami. Wsparcie dla bezpośredniej pracy z Wayland jest realizowane dla większości stosowanych w systemie Linux bibliotek graficznych, w tym GTK, Qt, SDL, FLTK, wxWidgets, Clutter i EFL (Enlightenment Foundation Library).
Interakcja z urządzeniami w Wayland/Weston, na przykład inicjalizacja, zmiana trybów wideo (drm modesetting) i zarządzanie pamięcią (GEM dla i915 i TTM dla radeon i nouveau) kart graficznych, może odbywać się bezpośrednio przez moduł działający na poziomie jądra, co pozwala ominąć wymagania superużytkownika. Aby zapewnić działanie standardowych aplikacji X11 w środowisku opartym na Wayland, używany jest komponent DDX XWayland (Device-Dependent X), który jest podobny pod względem funkcjonowania do Xwin i Xquartz dla platform Win32 i macOS.


Źródło: opennet.ru
