Po czterech miesiącach prac rozwojowych opublikowano stabilną wersję protokołu Wayland 1.26, mechanizmu komunikacji międzyprocesowej i bibliotek. Gałąź 1.26 jest wstecznie kompatybilna na poziomie API i ABI z wersjami 1.x i zawiera głównie poprawki błędów oraz drobne aktualizacje protokołu. Prace w ramach projektu są rozpowszechniane na licencji MIT. Serwer Weston, który udostępnia kod i przykłady działania dotyczące wykorzystania Wayland w środowiskach stacjonarnych i wbudowanych, jest rozwijany w osobnym cyklu rozwojowym.
Główne zmiany w protokole:
- Dodano zdarzenie wl_pointer.warp, które umożliwia otrzymywanie powiadomień o nowej pozycji wskaźnika bez obsługi zdarzenia wl_pointer.motion generowanego przez aktywność użytkownika.
- Dodano żądanie wl_fixes.ack_global_remove, które ma na celu wysłanie do menedżera kompozytów potwierdzenia, że klient zatrzymał przetwarzanie zdarzenia, aby zapobiec wyścigowi podczas usuwania zdarzeń globalnych. Po otrzymaniu potwierdzenia od wszystkich klientów, menedżer kompozytów może usunąć procedurę obsługi powiązaną ze zdarzeniem po swojej stronie.
- Dodano funkcję wl_display_remove_socket_fd() w celu usunięcia gniazd dodanych wcześniej za pomocą wywołania wl_display_add_socket_fd().
- W trybie debugowania WAYLAND_DEBUG czas jest rejestrowany w formacie „HH:MM:ss.xxxxxx”, co upraszcza analizę i porównywanie dzienników.
Rozszerzenia protokołu dodane od czasu poprzedniej wersji Wayland, które uzupełniają podstawowy protokół Wayland i są dostarczane w osobnym zestawie protokołów Wayland:
- xx-fractional-scale — do skalowania logicznego układu współrzędnych, w którym wartości są określone jako liczby całkowite, w celu poprawy dokładności pozycjonowania i zwiększenia rozdzielczości współrzędnych logicznych z dokładnością do pojedynczych pikseli. Ta funkcja rozwiązuje problem ograniczonej rozdzielczości logicznego układu współrzędnych, która jest niewystarczająca do pozycjonowania na poziomie pojedynczych pikseli, co jest niezbędne do pełnej implementacji skalowania ułamkowego.
- xx-cutouts — aby uzyskać informacje o wycięciach na ekranie (na przykład obszar pod przednim aparatem na ekranie smartfona).
- xx-zones — do tworzenia i dodawania okien najwyższego poziomu do „stref” — środowisk z własną przestrzenią współrzędnych. Protokół umożliwia logiczny układ okien, w którym każde okno jest pozycjonowane względem pozostałych.
- xx-keyboard-filter — umożliwia klientowi przechwytywanie wybranych zdarzeń klawiatury, modyfikowanie zdarzeń wejściowych lub blokowanie przekazywania określonych zdarzeń do skoncentrowanej powierzchni Wayland.
- Protokół xdg-session-management został dodany do kategorii staging, umożliwiając przywrócenie stanu i pozycji okien z przerwanej sesji w środowiskach opartych na protokole Wayland, na przykład po awarii złożonej. serwer lub aplikacji.
- Protokół „linux-dmabuf” został zaktualizowany w celu obsługi systemów z wieloma procesorami graficznymi. W takich systemach klient może negocjować dane kompozytowe. serwer który procesor graficzny powinien zostać użyty.
- Zaktualizowano protokół zarządzania kolorami w wersji 1, aby zapewnić obsługę metadanych obrazu BT.2100 do użytku w materiałach kompozytowych serwer określone programy obsługi, które umożliwiają prawidłowe wyświetlanie treści HDR utworzonych dla Windows.
Ważne wydarzenia związane z Waylandem od czasu publikacji ostatniego numeru:
- Cinnamon w pełni popiera Waylanda.
- W bibliotece ANGLE używanej w Chrome i AndroidDodano obsługę Wayland.
- W środowisku KDE korzystającym z Wayland zaimplementowano obsługę przywracania sesji oraz protokół xx-fractional-scale-v2 Wayland służący do skalowania ułamkowego.
- Stworzono port sterownika Synaptics X.Org dla środowisk opartych na Wayland.
- Rozpoczęto sprawdzanie gotowości platform efektów wizualnych i animacji do zastąpienia X11 systemem Wayland.
- Rozpoczęły się testy serwera kompozytowego Xfwl4 z projektu Xfce.
- Interfejs użytkownika Unity został stworzony na nowo przy użyciu Wayfire i Libadwaita.
- Zaktualizowane serwery kompozytowe i środowiska graficzne: 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.
Pamiętajmy, że Wayland to protokół interakcji między serwerem kompozycji a działającymi na nim aplikacjami. Klienci renderują swoje okna niezależnie w oddzielnym buforze, przekazując informacje o aktualizacjach do serwera kompozycji. serwer, który łączy zawartość poszczególnych buforów aplikacji w celu wygenerowania ostatecznego wyniku, uwzględniając możliwe niuanse, takie jak nakładanie się okien i przezroczystość. Innymi słowy, serwer kompozytowy nie udostępnia API do renderowania poszczególnych elementów, lecz działa tylko na wstępnie sformatowanych oknach, eliminując podwójne buforowanie podczas korzystania z bibliotek wysokiego poziomu, takich jak GTK i Qt, które zajmują się komponowaniem zawartości okien.
Wayland rozwiązuje wiele problemów bezpieczeństwa X11 w X.Org Server, ponieważ, w przeciwieństwie do tego ostatniego, izoluje dane wejściowe i wyjściowe dla każdego okna, nie pozwala klientowi na dostęp do zawartości okien innych klientów i nie pozwala na przechwytywanie zdarzeń wejściowych związanych z innymi oknami (XLibre XServer implementuje rozszerzenie X11 o nazwie Xnamespace, które zapewnia izolację klienta poprzez separację na poziomie przestrzeni nazw). Obsługa bezpośredniej pracy z Wayland jest zaimplementowana na większości platform używanych w X.Org Server. Linux biblioteki graficzne, w tym GTK, Qt, SDL, FLTK, wxWidgets, Clutter i EFL (Enlightenment Foundation Library).
Interakcja ze sprzętem w Wayland/Weston, taka jak inicjalizacja, przełączanie trybu wideo (ustawianie trybu DRM) i zarządzanie pamięcią (GEM dla i915 oraz TTM dla Radeon i Nouveau) w przypadku kart graficznych, może odbywać się bezpośrednio za pośrednictwem modułu na poziomie jądra, eliminując potrzebę uprawnień superużytkownika. Aby zapewnić wykonywanie standardowych aplikacji X11 w środowisku opartym na Wayland, używany jest komponent DDX XWayland (Device-Dependent X), który działa podobnie do Xwin i Xquartz dla Win32 i macOS.
Źródło: opennet.ru
