Byl vydán balíček wayland-protocols 1.46, který obsahuje sadu protokolů a rozšíření, které doplňují základní protokol Wayland a poskytují schopnosti nezbytné pro vytváření kompozitních serverů a uživatelských prostředí.
V nové verzi:
- Byl přidán experimentální protokol xx-input-method, který umožňuje aplikacím implementovat metody zadávání textu pro kompozitní servery a generovat vstupní text, který lze použít například k vytváření virtuálních klávesnic a vrstev IME (Input Method Editor) pro zpracování vstupu.
- Byl přidán experimentální protokol xx-text-input, který umožňuje kompozitním serverům implementovat metody vstupu a odesílat text do aplikací. Protokol standardizuje interakce mezi kompozitním serverem a aplikacemi a umožňuje kontrolu nad funkcemi, jako je přenos vstupního textu, zpracování událostí vstupního fokusu a zohledňování specifik vstupních polí (jazyk, výběr textu, typ obsahu).
- Protokoly color-management-v1 a color-representation-v1 byly vylepšeny a nyní poskytují možnosti správy barev, podporu HDR a definování barevné reprezentace povrchu Wayland.
Všechny protokoly postupně procházejí fázemi vývoje, testování a stabilizace. Po dokončení vývojové fáze (kategorie „unstable“) je protokol zařazen do větve „staging“ a oficiálně zařazen do sady wayland-protocols a po dokončení testování je přesunut do kategorie stable. Protokoly z kategorie „staging“ lze již používat na kompozitních serverech a klientech, kde je vyžadována související funkčnost. Na rozdíl od kategorie „unstable“ je v „stagingu“ zakázáno provádět změny, které porušují kompatibilitu, ale pokud se během testování zjistí problémy a nedostatky, není vyloučeno nahrazení novou významnou verzí protokolu nebo jiným rozšířením Wayland.
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 škálování a ořezávání okrajů povrchu na straně serveru.
- "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).
- content-type – Umožňuje klientům předávat informace o zobrazeném obsahu kompozitnímu serveru, což lze použít k optimalizaci chování s ohledem na obsah, jako je nastavení specifických vlastností DRM, jako je „typ obsahu“. Je deklarována podpora následujících typů obsahu: none (žádné informace o datovém typu), photo (výstup digitálních fotografií, vyžadující minimální zpracování), video (video nebo animace, je vyžadována přesnější synchronizace, aby nedošlo k zadrhávání) a hra (spouštění hry, výstup s minimálním zpožděním).
- 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-transient-seat“ je navržen pro vytváření dočasných nezávislých relací (sedadel) určených pro použití s virtuálními vstupními zařízeními. Například při implementaci možnosti připojení k vzdálená plocha Protokol umožňuje vytvoření samostatné relace 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ř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 rozšířeného dynamického rozsahu jasu (HDR, High Dynamic Range). S přidaným rozšířením mohou klientské aplikace získávat informace o vlastnostech souvisejících s barvami výstupních zařízení a předávat data o vlastnostech souvisejících s barvami vlastního obsahu kompozitnímu serveru. Na kompozitním serveru lze tyto informace použít k automatické správě barev při zobrazování obsahu na různých výstupních zařízeních, například k převodu obsahu na prezentaci vhodnou pro zobrazení na monitorech HDR. 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).
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 specifické pro Linux mechanismus pro synchronizaci vyrovnávacích pamětí vzhledem k povrchu.
- "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
