Byla publikována verze balíčku wayland-protocols 1.43, která obsahuje soubor protokolů a rozšíření, jež doplňují základní protokol Wayland a poskytují funkce potřebné pro vytváření kompozičních serverů a uživatelských prostředí.
Ve verzi Wayland-Protocols 1.43 byl přidán nový protokol „xdg-toplevel-tag“, který umožňuje Wayland klientům připojit značky k povrchům na nejvyšší úrovni, které může kompoziční server používat k identifikaci oken po restartu aplikace (například aplikace může nastavit značky „hlavní okno“ a „nastavení“ pro hlavní okno a okno s nastavením). Taková identifikace je užitečná pro obnovení pozice, velikosti a vlastností oken po restartu, stejně jako pro určení zvláštních pravidel pro jednotlivé typy oken.
Mezi dalšími vylepšeními je zaznamenáno přidání údajů o omezeních operací s okraji povrchu na nejvyšší úrovni do protokolu xdg-shell, které může kompoziční správce použít k informování Wayland klientů o existujících omezeních, například zda mohou okna měnit svou velikost nebo ne.
Všechny protokoly procházejí fázemi vývoje, testování a stabilizace. Po dokončení fáze vývoje (kategorie „unstable“) je protokol umístěn do větve „staging“ a oficiálně zařazen do sady wayland-protocols, a po dokončení testování je přesunut do kategorie stabilních. Protokoly z kategorie „staging“ lze již použít v kompozičních serverech a klientech, kde je požadována související funkčnost. Na rozdíl od kategorie „unstable“ jsou v „staging“ zakázány změny narušující kompatibilitu, avšak v případě odhalení problémů a nedostatků během testování není vyloučena výměna za novou významnou verzi protokolu nebo jiné Wayland rozšíření.
Aby urychlit doručování protokolů k vývojářům a podpořit včasnou implementaci protokolů ve stávajících projektech, byla od předminulého vydání navíc přidána fáze "experimental", ve které je povoleno provádět změny narušující kompatibilitu a přidávat "syrové" protokoly, které lze postupně dostat na požadovanou úroveň. Pokud je pro zařazení protokolu do fáze "staging" nutné vytvořit podpůrný tým a získat určité množství potvrzení (ACK) od účastníků recenzování, pak pro zařazení do "experimental" stačí absence námitek (NACK) během dvoutýdenního recenzního období.
V současnosti sestava wayland-protocols obsahuje následující stabilní protokoly, které zajišťují zpětnou kompatibilitu:
- "viewporter" — umožňuje klientovi provádět akce ohledně měnění velikosti a ořezávání okrajů plochy na straně serveru.
- „presentation-time“ — zajišťuje zobrazení videa.
- "xdg-shell" — rozhraní pro vytváření a interakci s plochami jako s okny, umožňující je přesouvat po obrazovce, minimalizovat, maximalizovat, měnit jejich rozměry atd.
- "linux-dmabuf" — poskytuje možnosti pro vytváření wl_bufferů na základě DMA-BUF.
- "tablet" — organizace vstupu z grafických tabletů.
Protokoly testované ve větvi „staging“:
- drm-lease — poskytuje prostředky potřebné k vytvoření stereofonního obrazu s různými vyrovnávacími paměťmi pro levé a pravé oko při výstupu na virtuální brýle.
- „ext-session-lock“ — určuje prostředky pro blokaci sezení, například během činnosti spořiče obrazovky nebo zobrazení dialogu pro autentifikaci.
- „single-pixel-buffer“ — umožňuje vytvářet jednopixelové vyrovnávací paměti obsahující čtyři 32bitové hodnoty RGBA.
- „xdg-activation“ — umožňuje přenést fokus mezi různými plochami první úrovně (např. pomocí xdg-activation může jedna aplikace přepnout fokus na jinou).
- content-type — umožňuje klientům předat kompozičnímu serveru informace o zobrazeném obsahu, které mohou být použity k optimalizaci chování s ohledem na obsah, například při nastavení specifických DRM vlastností, jako je "content type". Byla deklarována podpora následujících typů obsahu: none (žádné informace o typu dat), photo (výstup digitálních fotografií, vyžadující minimální zpracování), video (video nebo animace, vyžadující přesnější synchronizaci, aby se předešlo trhání) a game (spuštění her, vyžadující výstup s minimálním zpožděním).
- ext-idle-notify — dává možnost kompozitním serverům předávat klientům oznámení o neaktivitě uživatele, což může být využito k aktivaci dalších režimů úspor energie po určité době neaktivity.
- tearing-control — umožňuje vypnout vertikální synchronizaci (VSync) s rámcovým hlemýžděm ve fullscreen aplikacích, používanou k ochraně proti trhání při vykreslování. V multimediálních aplikacích je výskyt artefaktů z trhání nežádoucím efektem, ale v herních programech lze s artefakty smířit, pokud boj proti nim přináší dodatečné zpoždění.
- ext-foreign-toplevel-list — získání informací o površích umístěných na nejvyšší úrovni (toplevel), které umožňují organizovat uchycení oken nad jiným obsahem, například pro připojení vlastních panelů a přepínačů oken.
- security-context — umožňuje identifikaci klientů využívajících sandboxovou izolaci. Klient může zaregistrovat nové připojení k kompozitnímu serveru založenému na Waylandu a připojit k němu bezpečnostní kontext, po kterém kompoziční správce podle zadaného bezpečnostního kontextu omezí možnosti dostupné pro ustanovené spojení.
- cursor-shape — alternativní způsob nastavení vzhledu kurzoru, založený na posílání série obrazů kurzoru místo vazby na povrch (wl_surface).
- «ext-transient-seat» — určen pro vytváření dočasných nezávislých sezení (seat), navržených pro použití s virtuálními vstupními zařízeními. Například při realizaci možnosti připojení k vzdálené ploše protokol umožňuje vytvoření samostatného sezení s virtuální klávesnicí a myší pro každého uživatele.
- «xdg-toplevel-drag» — rozšiřuje mechanismus „drag & drop“ o možnost připojení horních úrovňových oken k operaci přesunutí, což může být využito například pro organizaci přetahování myší panelů nástrojů nebo záložek prohlížeče. Nový protokol umožňuje vytváření odpojovatelných částí okna, které při přetahování z tohoto okna se stávají novými okny a mohou se pohybovat nad existujícím oknem před opětovným připojením.
- «xdg-dialog» — umožňuje přiřazovat povrchům horní úrovně specifické vlastnosti pro dialogová okna, například lze vytvářet modální dialogy, které blokují interakci uživatele s ostatními částmi rozhraní.
- «linux-drm-syncobj» — poskytuje nástroje pro explicitní synchronizaci bufferů pomocí synchronizačních objektů DRM (Direct Rendering Manager). Předpokládá se, že v kontextu synchronizace při vykreslování do buffera navržený protokol zlepší práci s ovladači založenými na grafických API Vulkan a OpenGL (implementace je založena na zpracovatelích v ovladačích). Nový protokol umožňuje ověřit, že operace vykreslení do buffera je dokončena, než kompoziční manažer tento buffer zobrazuje.
- alpha-modifier, který umožňuje klientům měnit úroveň průhlednosti povrchu a delegovat operace zajištění průhlednosti na stranu kompozičního serveru, který je může předat KMS.
- xdg-toplevel-icon — vazba ikony na vrchní okno.
- ext-image-capture-source a ext-image-copy-capture — organizace záznamu obsahu vykreslovaného na obrazovce.
- xdg-system-bell — umožňuje vyvolat systémový signál, který může být například použit jako varování v emulátoru terminálů. Forma vyvolání signálu je na uvážení kompozičního manažera, může to být nejen zvuk, ale i vizuální reakce.
- fifo — implementuje FIFO mechanismus (first in, first out) zpracování fronty pro aktualizaci obsahu zobrazované plochy. Z praktického hlediska protokol umožňuje očekávání dokončení vertikální synchronizace (vblank) místo používání callback volání při každé přípravě k zobrazení nového snímku, což řeší problém s vysokým zatížením GPU při používání VSync.
- 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).
- 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 a také možnosti pro aktivaci a deaktivaci pracovních ploch. Protokol může být použit k vytváření panelů a ukazatelů, které zobrazují seznam dostupných virtuálních pracovních ploch a umožňují mezi nimi přepínat.
- color-management — poskytuje možnosti pro správu barev a podporu rozšířeného dynamického rozsahu jasu (HDR, High Dynamic Range). Díky přidanému rozšíření mohou klientské aplikace získat informace o vlastnostech zařízení výstupu souvisejících s barevnou reprodukcí a předávat kompozitnímu serveru data o vlastnostech barevné reprodukce svého obsahu. V kompozitu serveru tyto informace mohou být použity pro automatizované řízení barev při zobrazování obsahu na různých zařízeních výstupu, například pro převod obsahu do formátu vhodného pro zobrazení na HDR monitorech. Pro popis barevných prostorů se používají profily ICC.
Protokoly vyvíjené ve větvi „unstable“:
- „fullscreen-shell“ — správa provozu v režimu celé obrazovky.
- „input-method“ — zpracování metod vkládání.
- „idle-inhibit“ — blokace spuštění spořiče obrazovky.
- „input-timestamps“ — časové značky pro události vstupu.
- „keyboard-shortcuts-inhibit“ — správa přiřazení klávesových zkratek a horkých kláves.
- „linux-explicit-synchronization“ — specifický pro Linux mechanismus synchronizace vyrovnávacích pamětí vázaný na plochu.
- „pointer-gestures“ — správa příkazů z dotykových obrazovek.
- „pointer constraints“ — omezení ukazatelů (blokace).
- „primary-selection“ — analogicky k X11 zajišťuje funkčnost primární schránky (primary selection), jejíž informace se obvykle vkládají prostředními tlačítky myši.
- „relative pointer events“ — relativní události ukazatelů.
- „text-input“ — organizace textového vkládání.
- „xdg-foreign“ — rozhraní pro interakci s plochami „sousedního“ klienta.
- „xdg-decoration“ — vykreslování dekorací oken na straně serveru.
- „xdg-output“ — další informace o video výstupu (používá se pro zlomkové škálování).
- „xwayland-keyboard-grab“ — zachycení vstupu v aplikacích XWayland.
Zdroj: opennet.ru
