Megjelent a wayland-protocols 1.39-es verziója, amely protokollok és bővítmények gyűjteményét tartalmazza, amelyek kiegészítik a Wayland alap protokollt, és biztosítják a szükséges lehetőségeket összetett szerverek és felhasználói környezetek kiépítéséhez.
Minden protokoll fokozatosan átmegy a fejlesztés, tesztelés és stabilizálás fázisain. A fejlesztési szakasz (unstable kategória) befejezését követően a protokoll átkerül a „staging” ágba, és hivatalosan is beépül a wayland-protocols készletbe, majd a tesztelési fázis befejezése után stabil kategóriába kerül. A „staging” kategóriában lévő protokollokat már alkalmazni lehet a kompozit szervereken és klienseken, ahol a megfelelő funkciókra van szükség. A „staging” kategóriában a kompatibilitást sértő módosítások tiltottak, de ha tesztelés során problémák vagy hiányosságok merülnek fel, nem zárható ki a protokoll jelentős új verziójának vagy más Wayland-kiterjesztésének cseréje.
Az új verzióban hozzáadták a protokollok további promóciós fázisát – az 'experimental'-t, amely célja, hogy csökkentse a protokollok Wayland-Protocols gyűjteménybe való bekapcsolásának akadályait, felgyorsítsa a protokollok fejlesztőkhez való eljuttatását, és ösztönözze a korai megvalósítást a meglévő projektekben. Az új fázis lehetővé teszi a protokollfejlesztők számára, hogy elkerüljék a hosszan tartó vitákat és a bürokráciát, mielőtt a Wayland-Protocols részévé válnának.
Ha a protokoll 'staging' fázisba jutásához támogatói csapatot kell kialakítani, és bizonyos számú megerősítést (ACK) kell kapni a felülvizsgálati résztvevőktől, akkor az 'experimental' fázisba való bekerüléshez elegendő, ha két héten belül nincs ellenvetés (NACK) a felülvizsgálati időszak alatt. Az 'experimental' fázisban lehetőség van a kompatibilitást sértő változtatásokra és 'nyers' protokollok hozzáadására, amelyeket fokozatosan lehet a megfelelő szintre fejleszteni.
A 'staging' kategóriába az alábbi protokollok kerültek:
- ext-data-control — lehetővé teszi a jogosult ügyfelek számára az adatok feldolgozásának kezelését, például a vágólapkezelők megvalósításához.
- ext-workspace — megvalósítja a koncepciót vagy azok képernyőre történő áthelyezésére az egérrel való húzással a drag&drop módban. Új funkcióként bevezetésre került a virtuális asztalok rögzítése, amely lehetővé teszi a szükséges számú asztal nyitva tartását, függetlenül attól, hogy üresek-e vagy sem. és eseményeket kínál az asztalok állapotáról, valamint lehetőségeket a munkaterületek aktiválására és deaktiválására. A protokoll alkalmazható panelek és mutatók létrehozására, amelyek megjelenítik a rendelkezésre álló virtuális munkaasztalok listáját, és lehetővé teszik közöttük a váltást.
Jelenleg a wayland-protocols a következő stabil protokollokat tartalmazza, amelyek visszafelé kompatibilis módon működnek:
- „viewporter” – lehetővé teszi a kliens számára, hogy méretezési és felületi vágási műveleteket végezzen a szerver oldalon.
- A «presentation-time» - az videó megjelenítését biztosítja.
- „xdg-shell” – felületek létrehozásához és interakciókhoz használt interfész mint ablak, lehetővé téve azok képernyőn való mozgatását, minimalizálását, maximalizálását, méretezését, stb.
- "linux-dmabuf" — lehetővé teszi több grafikus kártya együttes használatát DMA-BUF technológia segítségével (lehetővé teszi wl_buffer létrehozását DMA-BUF alapú).
- A «tablet» - a grafikus táblagépekről történő bevitt adatok kezelését jelenti.
A «staging» ágban tesztelt protokollok:
- A drm-lease - a szükséges erőforrásokat biztosítja a bal és jobb szem számára különböző pufferek révén a háromdimenziós képek megjelenítéséhez virtuális valóság sisakokban.
- A «ext-session-lock» - a munkamenet zárolásához szükséges eszközöket határozza meg, például a képernyővédő működése vagy az azonosító párbeszédpanel megjelenítése során.
- A «single-pixel-buffer» - lehetővé teszi egypixeles pufferek létrehozását, amelyek négy 32 bites RGBA értéket tartalmaznak.
- A «xdg-activation» - lehetővé teszi a fókusz átvitelét különböző első szintű felületek között (például a xdg-activation révén egy alkalmazás fókuszt válthat egy másikra).
- content-type — lehetővé teszi a kliensek számára, hogy átadják a kompozitnak szerverhez az aktuális tartalomra vonatkozó információkat, amelyek felhasználhatók a folyamat optimalizálására a tartalom figyelembevételével, például specifikus DRM-jellemzők, mint a "content type" beállítására. A következő tartalomtípusok támogatását hirdetik: none (nincs adat a típusra), photo (digitális fényképek megjelenítése, minimális feldolgozást igényel), video (videó vagy animáció, pontosabb szinkronizálás szükséges a megbicsaklások elkerüléséhez) és game (játékok indítása, minimális késleltetés szükséges a megjelenítéshez).
- A ext-idle-notify - lehetőséget biztosít a kompozit szerverek számára, hogy értesítéseket küldjenek az ügyfeleknek a felhasználói inaktivitásról, amely az energiatakarékos üzemmódok aktiválására használható egy adott időszak inaktivitás után.
- tearing-control — lehetővé teszi a függőleges szinkronizálás (VSync) kikapcsolását a teljes képernyős alkalmazásokban, amelyet a megjelenítéskor fellépő szakadások (tearing) megakadályozására használnak. A multimédia alkalmazásokban a szakadások okozta artefaktumok nemkívánatos hatásnak számítanak, azonban játékprogramokban az artefaktumok elfogadhatóak, ha a küzdelem velük késleltetéseket okoz.
- ext-foreign-toplevel-list — információt nyújt a legfelső szinten elhelyezett felületekről (toplevel), amelyek lehetővé teszik az ablakok más tartalom felett történő rögzítését, például saját panelek és ablakváltók csatlakoztatására.
- security-context — lehetővé teszi a sandbox-izolációt használó kliensek azonosítását. A kliens új kapcsolatot tud regisztrálni a Wayland alapú kompozit szerverhez, és hozzá tudja rendelni a biztonsági kontextust, amely alapján a kompozit menedzser korlátozza az adott kapcsolat számára elérhető lehetőségeket.
- cursor-shape — alternatív módja a kurzor megjelenésének beállítására, amely alapján egy kurzor képkockasorozatot küldenek a felülethez (wl_surface) való hozzárendelés helyett.
- «ext-transient-seat» — ideiglenes független ülések (seat) létrehozására szolgál, amelyeket virtuális bemeneti eszközökkel együtt lehet használni. Például egy távoli asztalhoz való csatlakozás lehetőségének megvalósításakor a protokoll lehetővé teszi, hogy minden felhasználó számára külön ülést hozzanak létre virtuális billentyűzettel és egérrel.
- «xdg-toplevel-drag» — bővíti a „drag & drop” mechanizmust azzal a lehetőséggel, hogy a legfelső szintű ablakokat a mozgatási művelethez csatolhatják, ami például a panelek vagy a böngésző füljeinek egérrel történő áthúzására használható. Az új protokoll lehetővé teszi a leválasztható ablakelemek létrehozását, amelyek amikor ezen ablakból áthúzásra kerülnek, új ablakokká válnak és az aktuális ablak felett mozgathatók, mielőtt újra csatlakoznának.
- «xdg-dialog» — lehetővé teszi a legfelső szintű felületek számára dialógusablak-specifikus tulajdonságok hozzárendelését, például létrehozva modális dialógusokat, amelyek blokkolják a felhasználó interakcióját a felhasználói felület többi részével.
- A «linux-drm-syncobj» eszközöket biztosít a bufer szinkronizálásához a DRM (Direct Rendering Manager) szinkronizáló objektumai segítségével. Azt várják, hogy a buffer renderelése során a javasolt protokoll javítja a Vulkan és OpenGL alapú grafikus API-kkal való együttműködést (a megvalósítás a meghajtókban található kezelőkön alapul). Az új protokoll lehetővé teszi annak biztosítását, hogy a bufferbe történő renderelési művelet befejeződjön, mielőtt a kompozitor megjelenítené a buffer tartalmát.
- alpha-modifier, amely lehetővé teszi az ügyfelek számára a felület átlátszósági szintjének megváltoztatását, és megvalósítja az átlátszósági műveletek kompozit szerver oldalra történő áthelyezését, ami viszont átirányíthatja ezeket a műveleteket a KMS-nek.
- xdg-toplevel-icon — ikon hozzárendelése a legfelső szintű ablakhoz.
- ext-image-capture-source és ext-image-copy-capture — a képernyőn megjelenített tartalom rögzítésének megszervezése.
- xdg-system-bell — lehetővé teszi a rendszerszelvényt, amely például figyelmeztetésként használható terminálemulátorban. A jelzés kimeneti formája a kompozit menedzser döntésétől függ, ez lehet nemcsak hang, hanem vizuális visszajelzés is.
- fifo — megvalósítja a FIFO-m mechanismus (első be — első ki) a megjelenített felület tartalmának frissítési sorának kezeléséhez. Gyakorlatilag a protokoll lehetővé teszi a várakozást a függőleges elértékelés (vblank) befejezésére ahelyett, hogy callback hívásokat használnánk, amikor új keretet kell megjeleníteni, ami megoldja a GPU magas terheltségének problémáját a VSync használatakor.
- commit-timing — lehetővé teszi, hogy időkorlátot hozzárendeljünk a felület tartalmához (a kompozit szervernek lehetőség szerint az adott időn belül kell megjelenítenie a tartalomváltozást, de nem korábban).
A 'unstable' ágon fejlesztett protokollok:
- A 'fullscreen-shell' a teljes képernyős üzemmódban való működés kezelésére szolgál.
- A 'input-method' a bevitel módszereinek kezelését végzi.
- A 'idle-inhibit' megakadályozza a képernyővédő elindulását.
- A 'input-timestamps' időbélyegeket ad az input eseményekhez.
- A 'keyboard-shortcuts-inhibit' a billentyűkombinációk és gyorsgombok használatát korlátozza.
- A 'linux-explicit-synchronization' egy Linux-specifikus mechanizmus a bufferek felületekhez való szinkronizálására.
- A 'pointer-gestures' az érintőképernyők működését kezeli.
- A 'pointer constraints' a mutatók korlátozásait (lezárva) kezeli.
- A 'primary-selection' az X11-hez hasonlóan kezeli az elsődleges vágólapot, amelyből az információk általában a középső egérgombbal illeszthetőek be.
- A 'relative pointer events' a relatív mutatóeseményeket támogatja.
- A 'text-input' a szöveg bevitelének megszervezését végzi.
- A 'xdg-foreign' interfészt biztosít a 'szomszédos' kliens felületeivel való interakcióra.
- A 'xdg-decoration' az ablakok díszítéseit a szerver oldalán rajzolja meg.
- A 'xdg-output' további információkat nyújt a video kimenetről (történetelemzéshez használják).
- A 'xwayland-keyboard-grab' az XWayland alkalmazásokban történő bevitel elfogását végzi.
Forrás: opennet.ru
