Po 13 měsících vývoje byl uveden stabilní vydání protokolu, mechanismu mezi procesního vzájemného působení a knihoven Wayland 1.24. Větev 1.24 je zpětně kompatibilní na úrovni API a ABI s vydáními 1.x a obsahuje převážně opravy chyb a drobná vylepšení protokolu. Vývoj projektu je distribuován pod licencí MIT. Referenční kompoziční server Weston poskytuje kód a pracovní příklady pro použití Waylandu v desktopových prostředích a vestavěných řešeních, vyvíjí se v rámci samostatného vývojového cyklu.
Hlavní změny v protokolu:
- Byl zaveden rozhraní wl_fixes, které umožňuje řešit problémy s jinými softwarovými rozhraními základních protokolů, které nemohou být vyřešeny vlastními možnostmi těchto rozhraní. Například dotaz „wl_fixes::destroy_registry“ umožňuje zrušit objekt wl_registry, po jehož likvidaci klient již nebude moci používat a kompoziční server ukončí přenos událostí přes něj.
- V rozhraní wl_keyboard::key bylo implementováno pseudostav „repeated“, což označuje stav klávesy v stisknutém stavu. Klávesa může být převedena do stavu „repeated“ pouze po přechodu do stavu „pressed“, ale před dosažením stavu „released“. S novým stavem spojené události mohou být generovány vícekrát, dokud je klávesa stisknuta. Změna umožňuje kompozičním serverům zpracovávat opakovaná stisknutí při držení kláves jako samostatná stání, a ne jen jako proud opakovaných událostí stisknutí („pressed“), což může být užitečné pro organizaci práce s odpojenou plochou.
- Byly přidány funkce wl_display_dispatch_queue_timeout() a wl_display_dispatch_timeout() pro spravování událostí v řadě s ohledem na časový limit (funkce wl_display_dispatch a wl_display_dispatch_queue vrací 0 pouze při absenci událostí, zatímco varianty *_timeout také při překročení časového limitu).
- Byly přidány funkce wl_shm_buffer_ref() a wl_shm_buffer_unref() pro přístup k sdílené paměti spojené s buferem wl_shm_buffer po jeho zrušení (například když klient ukončuje činnost). Funkce umožňují odpojit buffer wl_shm_buffer od doby života hlavního zdroje wl_buffer, když kompoziční server potřebuje odložit přechod k novému stavu.
- Byly přidány funkce wl_proxy_get_interface() a wl_resource_get_interface(), které vracejí wl_interface pro zadaný zdroj, což je požadováno v obalových vrstvách pro jazyky s dynamickým typováním.
- Byla přidána funkce wl_resource_post_error_vargs(), která je alternativou k funkci wl_resource_post_error() s možností předat seznam argumentů pro formátování řetězce (va_list).
Nejvýznamnější události spojené s Waylandem, které se odehrály od vydání minulého vydání:
- Zlepšení podpory Waylandu v proprietárních grafikách NVIDIA.
- KDE plánuje ponechat pouze podporu Waylandu. Oddělení kódu kwin_x11 a kwin_wayland.
- Ubuntu a Kubuntu ponechají pouze podporu sezení Waylandu v GNOME a KDE.
- V GDM zůstala jako výchozí pouze podpora Waylandu.
- GTK převedlo backend pro X11 do kategorie zastaralých.
- Ve Fedoře 43 bylo rozhodnuto odstranit z repozitáře balíčky, které se používají v GNOME pro práci nad X-serverem. Všichni uživatelé GNOME s X11 budou nuceni přejít na sezení založené na Waylandu.
- V desktopovém prostředí Budgie bude ponechána pouze podpora Waylandu.
- V Xfce 4.20 byla implementována částečná podpora Waylandu.
- MATE 1.28 s experimentální podporou Waylandu.
- Wayback — kompozitní server Wayland pro provoz desktopů založených na X11.
- Společnost Valve spustila projekt Frog k urychlení propagace nových protokolů Wayland.
- Knihovna pro stavbu grafických rozhraní Cosmoe, využívající Wayland a API ve stylu BeOS.
- Povolení ovladače Wayland ve Wine jako výchozí.
- Přechod Raspberry Pi OS na používání Waylandu.
- Vydání grafického toolkit FLTK 1.4.0 s podporou Waylandu.
- Do sady Wayland-Protocols byla přidána další fáze propagace protokolů — "experimental", zaměřená na snížení bariéry při integraci protokolů, urychlení dodání protokolů vývojářům a povzbuzení k rané implementaci v existujících projektech.
- AMD rozvíjí vlastní kompozitní server ACS, který používá Wayland.
- Sedm alpha verzí desktopového prostředí COSMIC.
- Aktualizace kompozitních serverů: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Rozšíření protokolů přidaná za poslední rok, která doplňují základní protokol Wayland a jsou dodávána v samostatné sadě Wayland-Protocols:
- color-management — možnosti pro řízení barev a podporu rozšířeného dynamického rozsahu jasu (HDR, High Dynamic Range).
- color-representation-v1 — úkol barevného zobrazení plochy Wayland.
- xdg-toplevel-tag — umožňuje Wayland klientům přiřazovat tagy k vrchním plochám, které kompozitní server může využít k identifikaci oken po restartu aplikace.
- ext-background-effect — aplikace efektů na průhledné části plochy Wayland, jako je rozmazání pozadí.
- pointer-warp — umožňuje aplikaci okamžitě přesunout ukazatel na zadanou pozici.
- xx-session-management — obnovení stavu oken po přerušených sezeních (například po havárii kompozitního správce).
- xx-input-method — vývoj nového protokolu pro používání metod textového vstupu. ext-data-control — umožňuje privilegovaným klientům řídit zpracování dat, například pro implementaci správců schránky.
- ext-workspace — implementuje koncept virtuálních pracovních ploch a nabízí události s informacemi o stavu pracovních ploch, stejně jako možnosti pro aktivaci a deaktivaci pracovních ploch.
- xdg-system-bell — umožňuje vyvolat systémový signál, který může být používán například jako varování v terminálových emulátorech.
- xdg-toplevel-icon — pro přiřazení ikony k vrchnímu oknu.
- ext-image-capture-source a ext-image-copy-capture — zachycení obsahu zobrazeného na obrazovce.
- fifo — implementuje FIFO mechanismus (první přišel — první odešel) zpracování fronty aktualizace obsahu zobrazené plochy.
- commit-timing — umožňuje připojit časové omezení k obsahu plochy (kompoziční server by měl zobrazit změnu obsahu co nejdříve po určeném čase, ale ne dříve).
Připomeňme, že Wayland je protokol pro interakci mezi kompozitním serverem a aplikacemi, které s ním pracují. Klienti samostatně provádějí vykreslování svých oken v odděleném vyrovnávacím paměti, předávají informace o aktualizacích kompozitnímu serveru, který kombinuje obsah bufferů jednotlivých aplikací pro vytváření konečného výstupu s ohledem na možné nuance, jako je překrytí oken a průhlednost. Jinými slovy, kompozitní server neposkytuje API pro vykreslování jednotlivých prvků, ale operuje pouze s již vytvořenými okny, což umožňuje zbavit se dvojitého vyrovnávání při používání vysoce úrovňových knihoven, jako jsou GTK a Qt, které se ujímají práce s uspořádáním obsahu oken.
Wayland řeší mnoho problémů se zabezpečením X11, 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é nedovoluje zachytávání událostí vstupu souvisejících s jinými okny. Podpora přímé práce s Waylandem je implementová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
