Pachetul wayland-protocols versiunea 1.48 a fost lansat și conține un set de protocoale și extensii care completează protocolul Wayland de bază și oferă capabilitățile necesare pentru construirea de servere compozite și medii de utilizator.
În noua versiune:
- Protocolul xdg-session-management a fost adăugat la categoria de staging, oferind posibilitatea de a restaura starea și poziția ferestrelor dintr-o sesiune întreruptă în mediile bazate pe Wayland, de exemplu după ce un server compozit sau o aplicație se blochează.
- Protocolul de introducere a textului a fost extins, permițând serverelor compozite să implementeze metode de introducere și să trimită text către aplicații. De exemplu, a fost adăugat indicatorul no_emoji pentru introducerea fără emoji-uri, a fost implementat suport pentru acțiuni suplimentare dincolo de inserarea de text, a fost adăugat indicatorul de limbă pentru transmiterea informațiilor lingvistice, au fost adăugate solicitări pentru afișarea și ascunderea panoului de introducere și a fost adăugat indicatorul preedit_hint pentru personalizarea stilului de pre-editare.
- A fost adăugat protocolul experimental xx-cutouts pentru obținerea de informații despre decupajele de pe ecran (de exemplu, zona de sub camera frontală de pe ecranul smartphone-ului).
- A fost adăugat un protocol experimental xx-zones pentru crearea și adăugarea de ferestre de nivel superior în „zone” - medii cu propriul spațiu de coordonate. Acest protocol permite o aranjare logică a ferestrelor, fiecare fereastră fiind poziționată relativ la fiecare altă fereastră.
- A fost adăugat un protocol experimental, xx-keyboard-filter, pentru a permite clientului să intercepteze evenimente selectate de la tastatură, să modifice evenimentele de intrare sau să blocheze transmiterea anumitor evenimente către suprafața Wayland focalizată.
Toate protocoalele trec secvențial prin fazele de dezvoltare, testare și stabilizare. După finalizarea fazei de dezvoltare (categoria „instabilă”), un protocol este plasat în ramura „staging” și inclus oficial în suita wayland-protocols. După finalizarea testării, acesta este mutat în categoria stabilă. Protocoalele din categoria „staging” pot fi apoi utilizate în compozite. servere și clienți care necesită funcționalități conexe. Spre deosebire de categoria „instabilă”, „staging” interzice modificările care încalcă compatibilitatea. Cu toate acestea, dacă în timpul testării se descoperă probleme sau deficiențe, nu se poate exclude o înlocuire cu o nouă versiune semnificativă a protocolului sau cu o altă extensie Wayland.
Pentru a accelera livrarea protocoalelor către dezvoltatori și pentru a încuraja implementarea timpurie a protocoalelor în proiectele existente, începând cu ediția anterioară, a fost adăugată o fază „experimentală”, care permite modificări care întrerup compatibilitatea și adăugarea de protocoale „brute” care pot fi aduse treptat la nivelul corespunzător. În timp ce un protocol trebuie să formeze o echipă de asistență și să primească un anumit număr de confirmări (ACK) de la evaluatori pentru a intra în faza de pregătire, trebuie doar să nu primească obiecții (NACK) în timpul perioadei de revizuire de două săptămâni pentru a intra în faza experimentală.
Suita wayland-protocols include în prezent următoarele protocoale stabile, care sunt compatibile cu versiunea inversă:
- „viewporter” - permite clientului să efectueze acțiuni de scalare și decupare a marginilor suprafeței pe lateral Server.
- „prezentare-timp” - oferă afișare video.
- „xdg-shell” este o interfață pentru crearea și interacțiunea cu suprafețe ca ferestre, permițându-vă să le mutați pe ecran, să restrângeți, să extindeți, să redimensionați, etc.
- "linux-dmabuf" - oferă capabilități pentru crearea wl_buffers bazate pe DMA-BUF.
- „tabletă” - organizarea intrărilor din tabletele grafice.
Protocoale testate în ramura „staging”:
- drm-lease - furnizează resursele necesare pentru a genera o imagine stereo cu buffer-uri diferite pentru ochiul stâng și drept atunci când ieșiți către căștile de realitate virtuală.
- „ext-session-lock” - definește un mijloc de blocare a sesiunii, de exemplu, în timp ce economizorul de ecran rulează sau este afișat dialogul de autentificare.
- „single-pixel-buffer” - vă permite să creați buffer-uri cu un singur pixel care includ patru valori RGBA pe 32 de biți.
- „xdg-activation” - vă permite să transferați focalizarea între diferite suprafețe de la primul nivel (de exemplu, folosind xdg-activation, o aplicație poate comuta focalizarea pe alta).
- tip-de-conținut - permite clienților să transmită informații compozite Server Informații despre conținutul afișat care pot fi utilizate pentru a optimiza comportamentul în funcție de conținut, cum ar fi setarea unor proprietăți DRM specifice, cum ar fi „tipul de conținut”. Este declarat suport pentru următoarele tipuri de conținut: niciunul (fără informații despre tipul de date), foto (ieșire foto digitală care necesită procesare minimă), video (video sau animație, care necesită o sincronizare mai precisă pentru a evita sacadarea) și joc (lansarea jocului, care necesită o ieșire cu latență minimă).
- ext-idle-notify - Permite serverelor compozite să trimită notificări clienților despre inactivitatea utilizatorului, care pot fi folosite pentru a activa moduri suplimentare de economisire a energiei după un anumit timp de inactivitate.
- tearing-control - vă permite să dezactivați sincronizarea verticală (VSync) cu un impuls de amortizare verticală în aplicațiile pe ecran complet, utilizat pentru a proteja împotriva ruperii la ieșire. În aplicațiile multimedia, artefactele cauzate de rupere sunt un efect nedorit, dar în programele de jocuri, artefactele pot fi tolerate dacă tratarea lor provoacă întârzieri suplimentare.
- ext-foreign-toplevel-list - Preia informații despre suprafețele plasate la nivelul superior, care vă permit să organizați ferestre pentru a se andoca peste alt conținut, de exemplu, pentru a atașa propriile panouri și comutatoare pentru ferestre.
- security-context - vă permite să identificați clienții folosind izolarea sandbox. Un client poate înregistra o nouă conexiune la un server compus bazat pe Wayland și poate atașa acestuia un context de securitate, după care managerul compozit va limita capabilitățile disponibile conexiunii stabilite pe baza contextului de securitate specificat.
- forma cursorului este o modalitate alternativă de a personaliza aspectul cursorului, bazată pe trecerea unei serii de imagini ale cursorului în loc de fixarea pe o suprafață (wl_surface).
- „ext-transient-seat” - conceput pentru a crea sesiuni temporare independente (locuri) concepute pentru a fi utilizate cu dispozitive de intrare virtuale. De exemplu, atunci când implementați capacitatea de a vă conecta la un desktop de la distanță, protocolul vă permite să creați o sesiune separată pentru fiecare utilizator cu o tastatură și un mouse virtual.
- „xdg-toplevel-drag” - extinde mecanismul „drag & drop” cu posibilitatea de a atașa ferestre de nivel superior la o operație de glisare, care poate fi folosită, de exemplu, pentru a organiza glisarea barelor de instrumente sau a filelor browserului cu mouse-ul. Noul protocol vă permite să creați părți detașabile ale unei ferestre care, atunci când sunt trase din acea fereastră, devin ferestre noi și pot fi mutate deasupra ferestrei existente înainte de a fi reatașate.
- „xdg-dialog” - vă permite să atribuiți atribute specifice dialogului suprafețelor de nivel superior, de exemplu, puteți crea dialoguri modale care blochează interacțiunea utilizatorului cu restul interfeței.
- „linux-drm-syncobj” - oferă instrumente pentru sincronizarea explicită a bufferului folosind obiecte de sincronizare DRM (Direct Rendering Manager). Se presupune că, în contextul sincronizării la randarea într-un buffer, protocolul propus va îmbunătăți funcționarea cu driverele bazate pe API-urile grafice Vulkan și OpenGL (implementarea se bazează pe handlere din drivere). Noul protocol face posibilă asigurarea faptului că o operație de extragere într-un buffer este finalizată înainte ca managerul de compoziție să afișeze acel buffer.
- alpha-modifier, care permite clienților să schimbe nivelul de transparență al suprafeței și să transfere operațiunile pentru a asigura transparența pe partea laterală a serverului compus, care la rândul său poate redirecționa aceste operațiuni către KMS.
- xdg-toplevel-icon - leagă pictograma la fereastra de nivel superior.
- ext-image-capture-source și ext-image-copy-capture - organizarea captării conținutului afișat pe ecran.
- xdg-system-bell - vă permite să scoateți un semnal de sistem, care poate fi folosit, de exemplu, ca avertisment într-un emulator de terminal. Forma semnalului de ieșire este determinată la discreția managerului compozit, nu poate fi doar un sunet, ci și un răspuns vizual.
- fifo - implementează un mecanism FIFO (first in, first out) pentru procesarea cozii de actualizare a conținutului suprafeței afișate. Din punct de vedere practic, protocolul permite ieșirii să aștepte finalizarea scanării verticale (vblank) în loc să utilizeze apeluri de apel invers de fiecare dată când este gata să afișeze un nou cadru, ceea ce rezolvă problema încărcării mari a GPU-ului atunci când se utilizează VSync.
- commit-timing - vă permite să legați o limită de timp la conținutul de suprafață (serverul compus ar trebui să reflecte modificarea conținutului, dacă este posibil, după timpul specificat, dar nu mai devreme).
- ext-data-control - Permite clienților privilegiați să controleze procesarea datelor, de exemplu să implementeze manageri de clipboard.
- spațiu de lucru extern — implementează conceptul virtualnyx rabochikh stolov și oferă evenimente cu informații despre starea desktopurilor, precum și posibilitatea de a activa și dezactiva desktopuri. Protocolul poate fi utilizat pentru a crea tablouri de bord și indicatori care afișează o listă de desktopuri virtuale disponibile și permit comutarea între acestea.
- gestionarea culorilor — oferă capabilități pentru gestionarea culorilor și suport pentru interval dinamic ridicat (HDR). Această extensie permite aplicațiilor client să obțină informații despre proprietățile legate de culoare ale dispozitivelor de ieșire și să transmită date despre proprietățile de culoare ale propriului conținut către serverul compozit. În modul compozit, Server Aceste informații pot fi utilizate pentru gestionarea automată a culorilor la afișarea conținutului pe diverse dispozitive de ieșire, de exemplu, pentru a converti conținutul într-o prezentare potrivită pentru afișarea pe monitoare HDR. Profilurile ICC sunt utilizate pentru a descrie spațiile de culoare.
- xdg-toplevel-tag — Permite clienților Wayland să atașeze etichete la suprafețele de nivel superior pe care serverul de compoziție le poate utiliza pentru a identifica ferestrele după repornirea aplicației (de exemplu, o aplicație ar putea seta etichete „fereastră principală” și „setări” pentru fereastra principală și fereastra de setări). O astfel de identificare este utilă pentru restaurarea poziției, dimensiunii și proprietăților ferestrelor după o repornire și pentru definirea unor reguli speciale pentru tipuri individuale de ferestre.
- reprezentare-culoare — definește reprezentarea culorilor suprafeței Wayland. Clienții Wayland pot transmite metadatele necesare pentru a defini transparența, modelul de culoare, subeșantionarea și intervalul de cuantizare și sunt utilizate la convertirea unui buffer cu date corespunzătoare modelului de culoare YCbCr într-o reprezentare RGB.
- ext-background-effect - aplică efecte părților semitransparente ale unei suprafețe Wayland, cum ar fi estomparea fundalului.
- pointer-warp - Permite unei aplicații să mute instantaneu indicatorul într-o poziție specificată.
Protocoale dezvoltate în ramura experimentală:
- xx-session-management - restaurează starea ferestrelor pentru sesiunile întrerupte (de exemplu, după o eroare a managerului compozit).
- xx-input-method — permite aplicațiilor să implementeze metode de introducere a textului pentru date compozite servere și generează textul introdus, care poate fi utilizat, de exemplu, pentru a crea tastaturi virtuale și straturi IME (Input Method Editor) pentru procesarea datelor de intrare.
- xx-text-input — permite serverelor compozite să implementeze metode de introducere a textului și să trimită text către aplicații. Protocolul standardizează interacțiunea dintre serverele compozite Server și aplicații și vă permite să gestionați capabilități precum transmiterea textului de intrare, gestionarea evenimentelor de schimbare a focalizării intrării și luarea în considerare a specificului câmpurilor de intrare (limbă, selecție de text, tip de conținut).
Protocoale dezvoltate în ramura „instabilă”:
- „fullscreen-shell” - controlul muncii în modul ecran complet.
- "input-method" - metode de procesare a introducerii.
- „idle-inhibit” - blocarea lansării screensaver-ului (screensaver).
- "input-timestamps" - marcaje de timp pentru evenimentele de intrare.
- „keyboard-shortcuts-inhibit” - controlează atașarea comenzilor rapide de la tastatură și a tastelor rapide.
- „linux-explicit-syncronization” este specific pentru Linux mecanism pentru sincronizarea tampoanelor în raport cu suprafața.
- „gesturi-pointer” - control de pe ecranele tactile.
- „constrângeri pointer” - constrângeri pointer (blocare).
- „selectare primară” - prin analogie cu X11, asigură funcționarea clipboard-ului primar (selecție primară), informații din care se inserează de obicei cu butonul din mijloc al mouse-ului.
- „evenimente indicator relativ” - evenimente indicator relativ.
- „text-input” - organizarea introducerii textului.
- „xdg-foreign” este o interfață pentru interacțiunea cu suprafețele clientului „învecinat”.
- „xdg-decoration” - redarea decorațiunilor ferestrei pe partea serverului.
- „xdg-output” - informații suplimentare despre ieșirea video (folosită pentru scalarea fracțională).
- „xwayland-keyboard-grab” - capturați intrarea în aplicațiile XWayland.
Sursa: opennet.ru
