Po čtyřech měsících vývoje byl představen stabilní vydání protokolu, mechanismu meziprocesní komunikace a knihoven Wayland 1.26. Větev 1.26 je zpětně kompatibilní na úrovni API a ABI s vydáními 1.x a zahrnuje převážně opravy chyb a drobné aktualizace protokolu. Vývoj projektu je šířen pod licencí MIT. Referenční kompozitní server Weston, který poskytuje kód a pracovní příklady pro využití Wayland v desktopových prostředích a embedded řešeních, se vyvíjí v rámci samostatného vývojového cyklu.
Hlavní změny v protokolu:
- Byla přidána událost wl_pointer.warp, prostřednictvím které je možné získávat oznámení o nové pozici ukazatele bez zpracování události wl_pointer.motion generované při aktivitě uživatele.
- Byl přidán požadavek wl_fixes.ack_global_remove, určený k zaslání kompozitnímu správci potvrzení o tom, že klient přestal zpracovávat událost, aby se předešlo stavu závodu při odstraňování globálních událostí. Po obdržení potvrzení od všech klientů může kompozitní správce odstranit s událostí spojeného zpracovatele na své straně.
- Byla přidána funkce wl_display_remove_socket_fd() pro odstranění soketů, které byly dříve přidány pomocí volání wl_display_add_socket_fd().
- V režimu ladění WAYLAND_DEBUG je zajištěn výstup do logu s časem ve formátu „HH:MM:ss.xxxxxx“, což usnadňuje analýzu a porovnávání logů.
Rozšíření protokolu přidané po posledním vydání Wayland, která doplňují základní protokol Wayland a jsou dodávána v samostatném souboru Wayland-Protocols:
- xx-fractional-scale — pro škálování systému logických souřadnic, jehož hodnoty jsou definovány celými čísly, pro zvýšení přesnosti umístění a zvýšení rozlišení logických souřadnic na jednotlivé pixely. Tato možnost řeší problém s omezeným rozlišením systému logických souřadnic, které není dostatečné pro umístění na úrovni jednotlivých pixelů, což je nezbytné pro plné provedení zlomeného škálování.
- xx-cutouts — pro získání informací o výřezech na obrazovce (například oblasti pod přední kamerou na obrazovce smartphonu).
- xx-zones — pro vytváření a přidání oken vyšší úrovně do „zón“ — prostředí s vlastním prostorem souřadnic. Protokol umožňuje organizovat logické rozmístění oken, kde každé okno je umístěno vzhledem k jinému oknu.
- xx-keyboard-filter — pro zachytávání vybraných událostí klávesnice klientem, úpravy událostí vstupu nebo blokování přenosu určitých událostí do Wayland povrchu, na kterém je aktivní fokus vstupu.
- Do kategorie „staging“ byl přidán protokol xdg-session-management, který poskytuje možnosti obnovy stavu a pozice oken přerušeného sezení v prostředích založených na protokolu Wayland, například po havarijním ukončení kompozitního serveru nebo aplikace.
- Do protokolu «linux-dmabuf» byla přidána podpora práce na systémech s více GPU. Na takových systémech může klient dohodnout s kompozitními serverem který GPU by měl být použit.
- Do protokolu color-management-v1 byla přidána podpora metadat obrázků ve formátu BT.2100 pro použití v kompozitních serveru specifických zpracovatelích, které umožňují správně zobrazit HDR obsah vytvořený pro Windows.
Nejvýznamnější události spojené s Waylandem, které se odehrály po publikaci posledního vydání:
- V Cinnamon byla implementována plná podpora Waylandu.
- Do knihovny ANGLE, používané v Chrome a Androidu, byla přidána podpora Waylandu.
- V KDE byla při použití Waylandu implementována podpora obnovy sezení a byl realizován Wayland-protokol xx-fractional-scale-v2 pro zlomkové škálování.
- Byl vytvořen port X.Org ovladače Synaptics pro prostředí na bázi Waylandu.
- Byla zahájena kontrola připravenosti platforem VFX a animace na výměnu X11 za Wayland.
- Bylo zahájeno testování kompozitního serveru Xfwl4 od projektu Xfce.
- Na základě Wayfire a Libadwaita byla znovu vytvořena uživatelská vrstva Unity.
- Byly aktualizovány kompozitní servery a desktopová prostředí: 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.
Připomeňme, že Wayland je protokol pro interakci kompozitního serveru a aplikací, které s ním pracují. Klienti vykreslují svá okna sami v odděleném vyrovnávacím rámečku a předávají informace o aktualizacích kompozitnímu serveru, který kombinuje obsah vyrovnávacích rámců jednotlivých aplikací tak, aby vytvořil konečný výstup s ohledem na možné nuance, jako je překrývání oken a průhlednost. Jinými slovy, kompozitní server neposkytuje API pro vykreslování jednotlivých prvků, ale pracuje pouze s již vytvořenými okny, což umožňuje zbavit se dvojitého vyrovnání při použití vysoceúrovňových knihoven, jako je GTK a Qt, které se ujímají práce na uspořádání obsahu oken.
Wayland řeší mnoho bezpečnostních problémů X11 v X.Org Server, protože na rozdíl od posledního izoluje vstup a výstup pro každé okno, neumožňuje klientovi přístup k obsahu oken jiných klientů a také neumožňuje zachycení událostí vstupu souvisejících s jinými okny (v XLibre XServer je implementováno X11 rozšíření Xnamespace, které zajišťuje izolaci klientů prostřednictvím oddělení na úrovni jmenných prostorů). Podpora přímé spolupráce s Waylandem je zajištěna pro většinu používaných grafických knihoven v Linuxu, včetně GTK, Qt, SDL, FLTK, wxWidgets, Clutter a EFL (Enlightenment Foundation Library).
Interakce s hardwarem v Waylandu/Westonu, například provádění inicializace, přepínání video módů (drm modesetting) a správa paměti (GEM pro i915 a TTM pro radeon a nouveau) grafických karet, může být prováděna přímo prostřednictvím modulu pracujícího na úrovni jádra, což umožňuje obejít se bez privilegií superuživatele. Pro zajištění fungování běžných aplikací X11 v prostředí založeném na Waylandu se používá komponent DDX XWayland (Device-Dependent X), který má podobnou organizaci práce jako Xwin a Xquartz pro platformy Win32 a macOS.
Zdroj: opennet.ru
