Byl vydán balíček wayland-protocols verze 1.48, který obsahuje sadu protokolů a rozšíření, jež doplňují základní protokol Wayland a poskytují funkce potřebné pro vytváření kompozitních serverů a uživatelských prostředí.
V nové verzi:
- Do kategorie staging byl přidán protokol xdg-session-management, který umožňuje obnovit stav a pozici oken z přerušené relace v prostředích založených na Waylandu, například po havárii kompozitního serveru nebo aplikace.
- Protokol pro zadávání textu byl rozšířen, což umožňuje kompozitním serverům implementovat metody zadávání a odesílat text do aplikací. Například byl přidán příznak no_emoji pro zadávání bez emotikonů, byla implementována podpora pro další akce nad rámec vkládání textu, byl přidán příznak jazyka pro přenos informací o jazyce, byly přidány požadavky na zobrazení a skrytí vstupního panelu a byl přidán příznak preedit_hint pro přizpůsobení stylu předúpravy.
- Přidán experimentální protokol xx-cutouts pro získávání informací o výřezech na obrazovce (například oblast pod předním fotoaparátem na obrazovce smartphonu).
- Byl přidán experimentální protokol xx-zones pro vytváření a přidávání oken nejvyšší úrovně do „zón“ – prostředí s vlastním souřadnicovým prostorem. Tento protokol umožňuje logické uspořádání oken, přičemž každé okno je umístěno vzhledem ke všem ostatním oknům.
- Přidán experimentální protokol xx-keyboard-filter, který umožňuje klientovi zachytit vybrané události klávesnice, upravit vstupní události nebo blokovat přenos určitých událostí na zaostřený povrch Waylandu.
Všechny protokoly postupně procházejí fázemi vývoje, testování a stabilizace. Po dokončení fáze vývoje (kategorie „nestabilní“) je protokol umístěn do větve „staging“ a oficiálně zahrnut do sady wayland-protocols. Po dokončení testování je přesunut do kategorie stable. Protokoly v kategorii „staging“ lze poté použít v kompozitních protokolech. servery a klienty, kteří vyžadují související funkce. Na rozdíl od kategorie „nestabilní“ kategorie „připravování na testování“ zakazuje změny, které narušují kompatibilitu. Pokud se však během testování objeví problémy nebo nedostatky, nelze vyloučit nahrazení novou, významnou verzí protokolu nebo jiným rozšířením Waylandu.
Pro urychlení dodání protokolů vývojářům a podporu včasné implementace protokolů ve stávajících projektech byla počínaje předchozí verzí přidána „experimentální“ fáze, která umožňuje změny, které narušují kompatibilitu, a přidávání „surových“ protokolů, které lze postupně přivést na správnou úroveň. Zatímco protokol musí vytvořit podpůrný tým a obdržet určitý počet potvrzení (ACK) od recenzentů, aby mohl vstoupit do fáze přípravy, potřebuje pouze během dvoutýdenního období kontroly obdržet žádné námitky (NACK), aby mohl vstoupit do experimentální fáze.
Sada wayland-protocols aktuálně obsahuje následující stabilní protokoly, které jsou zpětně kompatibilní:
- viewporter" - umožňuje klientovi provádět akce na změnu měřítka a oříznutí okrajů povrchu na boku server.
- "presentation-time" - poskytuje zobrazení videa.
- "xdg-shell" je rozhraní pro vytváření a interakci s plochami jako okny, které vám umožňuje přesouvat je po obrazovce, sbalit, rozbalit, změnit velikost atd.
- "linux-dmabuf" - poskytuje možnosti pro vytváření wl_bufferů založených na DMA-BUF.
- "tablet" - organizace vstupu z grafických tabletů.
Protokoly testované ve větvi „staging“:
- drm-lease – poskytuje prostředky nezbytné pro generování stereo obrazu s různými buffery pro levé a pravé oko při výstupu do náhlavních souprav pro virtuální realitu.
- "ext-session-lock" - definuje způsob uzamčení relace, například když je spuštěn spořič obrazovky nebo je zobrazen autentizační dialog.
- "single-pixel-buffer" - umožňuje vytvářet jednopixelové vyrovnávací paměti, které obsahují čtyři 32bitové hodnoty RGBA.
- „xdg-activation“ – umožňuje přenášet fokus mezi různými povrchy první úrovně (například pomocí aktivace xdg může jedna aplikace přepínat fokus na jinou).
- typ obsahu - umožňuje klientům předávat kompozitní server Informace o zobrazovaném obsahu, které lze použít k optimalizaci chování s ohledem na obsah, například nastavení specifických vlastností DRM, jako je například „typ obsahu“. Je deklarována podpora pro následující typy obsahu: žádný (žádné informace o datovém typu), fotografie (výstup digitální fotografie vyžadující minimální zpracování), video (video nebo animace vyžadující přesnější synchronizaci, aby se zabránilo zasekávání) a hra (spuštění hry vyžadující výstup s minimální latencí).
- ext-idle-notify – Umožňuje kompozitním serverům zasílat klientům oznámení o nečinnosti uživatele, což lze použít k aktivaci dalších úsporných režimů po určité době nečinnosti.
- tearing-control - umožňuje deaktivovat vertikální synchronizaci (VSync) s vertikálním tlumícím impulsem v celoobrazovkových aplikacích, sloužící k ochraně proti trhání na výstupu. V multimediálních aplikacích jsou artefakty způsobené trháním nežádoucím efektem, ale v herních programech lze artefakty tolerovat, pokud se s nimi zachází další zpoždění.
- ext-foreign-toplevel-list – Získává informace o površích umístěných na nejvyšší úrovni, což vám umožňuje uspořádat okna tak, aby se ukotvila nad jiným obsahem, například pro připojení vlastních panelů a přepínačů oken.
- security-context - umožňuje identifikovat klienty pomocí izolace sandboxu. Klient může zaregistrovat nové připojení ke kompozitnímu serveru založenému na Wayland a připojit k němu kontext zabezpečení, načež správce kompozitu omezí možnosti dostupné pro vytvořené připojení na základě zadaného kontextu zabezpečení.
- kurzor-shape je alternativní způsob přizpůsobení vzhledu kurzoru, založený na předávání série obrázků kurzoru namísto přichycení k povrchu (wl_surface).
- „ext-tranient-seat“ – navržený k vytvoření dočasných nezávislých relací (sedadel) navržených pro použití s virtuálními vstupními zařízeními. Například při implementaci možnosti připojení ke vzdálené ploše vám protokol umožňuje vytvořit samostatnou relaci pro každého uživatele pomocí virtuální klávesnice a myši.
- "xdg-toplevel-drag" - rozšiřuje mechanismus "drag & drop" o možnost připojit k operaci přetažení okna nejvyšší úrovně, což lze použít například k organizaci přetahování panelů nástrojů nebo karet prohlížeče pomocí myši. Nový protokol umožňuje vytvářet oddělitelné části okna, které se po přetažení z tohoto okna stanou novými okny a lze je přesunout nad stávající okno, než budou znovu připojeny.
- "xdg-dialog" - umožňuje přiřadit atributy specifické pro dialog povrchům nejvyšší úrovně, například můžete vytvářet modální dialogy, které blokují interakci uživatele se zbytkem rozhraní.
- "linux-drm-syncobj" - poskytuje nástroje pro explicitní synchronizaci vyrovnávací paměti pomocí synchronizačních objektů DRM (Direct Rendering Manager). Předpokládá se, že v rámci synchronizace při renderování do bufferu navržený protokol zlepší práci s ovladači založenými na grafických API Vulkan a OpenGL (implementace je založena na handlerech v ovladačích). Nový protokol umožňuje zajistit, aby operace kreslení do vyrovnávací paměti byla dokončena dříve, než správce skládání tuto vyrovnávací paměť zobrazí.
- alpha-modifikátor, který klientům umožňuje měnit úroveň průhlednosti povrchu a přenášet operace, aby byla zajištěna průhlednost na stranu kompozitního serveru, který zase může přesměrovat tyto operace na KMS.
- xdg-toplevel-icon - svázat ikonu s oknem nejvyšší úrovně.
- ext-image-capture-source a ext-image-copy-capture – organizace zachyceného obsahu zobrazeného na obrazovce.
- xdg-system-bell - umožňuje výstup systémového signálu, který lze použít například jako varování v emulátoru terminálu. Forma výstupu signálu je určena podle uvážení správce kompozitu, může to být nejen zvuková, ale i vizuální odezva.
- fifo - implementuje mechanismus FIFO (first in, first out) pro zpracování fronty aktualizace obsahu zobrazeného povrchu. Po praktické stránce protokol umožňuje, aby výstup používal čekání na dokončení vertikálního skenování (vblank) namísto použití zpětných volání pokaždé, když je připraven zobrazit nový snímek, což řeší problém velkého zatížení GPU při použití VSync.
- commit-timing – umožňuje vám svázat časový limit na povrchový obsah (složený server by měl odrážet změnu obsahu pokud možno po zadané době, ale ne dříve).
- ext-data-control – Umožňuje privilegovaným klientům řídit zpracování dat, například implementovat správce schránky.
- ext-workspace — implementuje koncept virtuální desktopy a nabízí události s informacemi o stavu desktopů a také možnost aktivace a deaktivace desktopů. Protokol lze použít k vytvoření dashboardů a indikátorů, které zobrazují seznam dostupných virtuálních desktopů a umožňují mezi nimi přepínání.
- správa barev – poskytuje funkce pro správu barev a podporu pro vysoký dynamický rozsah (HDR). Toto rozšíření umožňuje klientským aplikacím získávat informace o vlastnostech výstupních zařízení souvisejících s barvami a předávat data o vlastnostech barev jejich vlastního obsahu kompozitnímu serveru. V kompozitním režimu, server Tyto informace lze použít pro automatickou správu barev při zobrazování obsahu na různých výstupních zařízeních, například k převodu obsahu do prezentace vhodné pro zobrazení na HDR monitorech. Profily ICC se používají k popisu barevných prostorů.
- xdg-toplevel-tag — Umožňuje klientům Waylandu připojit k povrchům nejvyšší úrovně tagy, které může kompoziční server použít k identifikaci oken po restartu aplikace (například aplikace může nastavit tagy „hlavní okno“ a „nastavení“ pro hlavní okno a okno nastavení). Taková identifikace je užitečná pro obnovení polohy, velikosti a vlastností oken po restartu a pro definování speciálních pravidel pro jednotlivé typy oken.
- barevná reprezentace — definuje barevnou reprezentaci povrchu Waylandu. Klienti Waylandu mohou předávat metadata potřebná k definování průhlednosti, barevného modelu, podvzorkování a rozsahu kvantizace a používat je při převodu vyrovnávací paměti s daty odpovídajícími barevnému modelu YCbCr na reprezentaci RGB.
- ext-background-effect – aplikuje efekty na poloprůhledné části povrchu Waylandu, například rozostření pozadí.
- pointer-warp - Umožňuje aplikaci okamžitě přesunout ukazatel na zadanou pozici.
Protokoly vyvíjené v experimentální větvi:
- xx-session-management - obnovuje stav oken pro přerušené relace (například po havárii kompozitního správce).
- xx-input-method — umožňuje aplikacím implementovat metody zadávání textu pro kompozitní formáty servery a generovat zadaný text, který lze použít například k vytvoření virtuálních klávesnic a vrstev IME (Input Method Editor) pro zpracování vstupu.
- xx-text-input — umožňuje kompozitním serverům implementovat metody vstupu a odesílat text do aplikací. Protokol standardizuje interakci mezi kompozitními servery. server a aplikací a umožňuje spravovat takové funkce, jako je přenos vstupního textu, zpracování událostí změny fokusu vstupu a zohlednění specifik vstupních polí (jazyk, výběr textu, typ obsahu).
Protokoly vyvíjené v „nestabilní“ větvi:
- „fullscreen-shell“ - ovládání práce v režimu celé obrazovky.
- "input-method" - zpracování vstupních metod.
- „idle-inhibit“ - blokování spuštění spořiče obrazovky (spořiče obrazovky).
- "input-timestamps" - časové značky pro vstupní události.
- "keyboard-shortcuts-inhibit" - ovládá připojení klávesových zkratek a horkých kláves.
- "linux-explicit-synchronization" je linuxový specifický mechanismus pro synchronizaci povrchových vyrovnávacích pamětí.
- "ukazatel-gesta" - ovládání z dotykových obrazovek.
- „pointer constraints“ - omezení ukazatele (blokování).
- „primární výběr“ - analogicky s X11 zajišťuje provoz primární schránky (primárního výběru), informace ze které se obvykle vkládají prostředním tlačítkem myši.
- „relative pointer events“ – události relativního ukazatele.
- „text-input“ - organizace vkládání textu.
- „xdg-foreign“ je rozhraní pro interakci s povrchy „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
