După patru luni de dezvoltare, a fost lansată o versiune stabilă a protocolului, mecanismului de interacțiune între procese și bibliotecilor Wayland 1.26. Ramura 1.26 este compatibilă înapoi cu nivelul API și ABI cu versiunile 1.x și conține în principal corecții de erori și actualizări minore ale protocolului. Lucrările proiectului sunt distribuite sub licența MIT. Compozitul de referință serverul Weston, care oferă cod și exemple funcționale pentru utilizarea Wayland în medii desktop și soluții încorporate, se dezvoltă în cadrul unui ciclu de dezvoltare separat.
Principalele modificări în protocol:
- A fost adăugat evenimentul wl_pointer.warp, prin care se pot primi notificări despre noua poziție a cursorului fără a procesa evenimentul wl_pointer.motion, generat de activitatea utilizatorului.
- A fost adăugată cererea wl_fixes.ack_global_remove, destinată trimiterea către managerul de compunere a confirmării că clientul a încetat procesarea evenimentului pentru a exclude starea de concurență la ștergerea evenimentelor globale. După primirea confirmării de la toți clienții, managerul de compunere poate șterge handlerul asociat cu evenimentul de pe partea sa.
- A fost adăugată funcția wl_display_remove_socket_fd() pentru a elimina socket-urile, adăugate anterior prin apelul wl_display_add_socket_fd().
- În modul de depanare WAYLAND_DEBUG, se furnizează o ieșire în log a timpului în formatul „HH:MM:ss.xxxxxx”, facilitând analiza și compararea jurnalelor.
Extensiile protocoalelor adăugate după lansarea anterioară a Wayland, care completează protocolul de bază Wayland și sunt livrate într-un set separat de Wayland-Protocols:
- xx-fractional-scale — pentru scalarea sistemului de coordonate logice, al căror valori sunt stabilite prin numere întregi, pentru a îmbunătăți precizia poziționării și pentru a crește rezoluția coordonatelor logice la pixeli individuali. Această capacitate rezolvă problema cu rezoluția limitată a sistemului de coordonate logice, insuficientă pentru poziționarea la nivel de pixeli individuali, necesară pentru implementarea completă a scalării fracționale.
- xx-cutouts — pentru a obține informații despre decupajele de pe ecran (de exemplu, zona pentru camera frontală pe ecranul smartphone-ului).
- xx-zones — pentru a crea și adăuga feronii de nivel superior în „zone” — medii cu propriul spațiu de coordonate. Protocolul permite organizarea unei aranjări logice a feronilor, în care fiecare feron este plasat în raport cu un alt feron.
- xx-keyboard-filter — pentru interceptarea de către client a anumitor evenimente de tastatură, modificarea evenimentelor de input sau blocarea transmiterii unor evenimente pe suprafața Wayland pe care este stabilit focusul input-ului.
- În categoria „staging” a fost adăugat protocolul xdg-session-management, care oferă posibilități de restaurare a stării și poziției ferestrelor în sesiuni întrerupte în medii bazate pe protocolul Wayland, de exemplu, după o încheiere abruptă a compozitorului. server sau aplicației.
- În protocolul «linux-dmabuf» a fost adăugată suport pentru funcționarea pe sisteme cu mai multe GPU-uri. Pe astfel de sisteme, clientul poate conveni cu compozitorii serverul ce GPU trebuie utilizat.
- În protocolul color-management-v1 a fost adăugat suport pentru metadatele imaginilor în format BT.2100, pentru aplicarea în compozitori server manipulatorii specifici, care permit redarea corectă a conținutului HDR creat pentru Windows.
Cele mai notabile evenimente legate de Wayland care au avut loc după publicarea ultimei versiuni:
- În Cinnamon a fost implementat suportul complet pentru Wayland.
- În biblioteca ANGLE, utilizată în Chrome și Android, a fost adăugat suport pentru Wayland.
- În KDE, utilizarea Wayland a realizat suport pentru restaurarea sesiunilor și a fost implementat protocolul Wayland xx-fractional-scale-v2 pentru scalare fracționată.
- A fost creat un port al driverului X.Org Synaptics pentru medii bazate pe Wayland.
- A fost inițiată verificarea pregătirii platformelor VFX și de animație pentru a înlocui X11 cu Wayland.
- A început testarea serverului compozitor Xfwl4 de la proiectul Xfce.
- Pe baza Wayfire și Libadwaita a fost recreat shell-ul utilizatorului Unity.
- Serverele compozitor și mediile desktop au fost actualizate: COSMIC 1.3.0, Weston 16, Phosh 0.56, Nourish 1.0.0, miracle-wm 0.10, KDE Plasma 6.7, labwc 0.20, Sway 1.2, Wayland Maker 0.8, Hyprland 0.55, Niri 26.04, LXQt 2.4.0, Cage 0.3.
Să reamintim că Wayland reprezintă un protocol de interacțiune între serverul compozitor și aplicațiile care lucrează cu acesta. Clienții desenează singuri ferontele în buffer-ul lor separat, transmițând informațiile despre actualizări serverului compozitor. server, care combină conținutul bufferelor aplicațiilor separate pentru a forma ieșirea finală, ținând cont de eventualele nuanțe, cum ar fi suprapunerile feroncelor și transparența. Cu alte cuvinte, serverul compozit nu oferă API pentru redarea elementelor individuale, ci operează doar cu feroncele deja formate, ceea ce permite eliminarea dublării bufferelor când se folosesc biblioteci de nivel înalt, cum ar fi GTK și Qt, care se ocupă de compunerea conținutului feroncelor.
Wayland rezolvă multe probleme de securitate din X11 în X.Org Server, deoarece, spre deosebire de acesta, izolează intrările și ieșirile pentru fiecare fereastră, nu permite clientului să acceseze conținutul feronților altor clienți și nu permite interceptarea evenimentelor de intrare asociate cu alte feronți (în XLibre XServer a fost implementat extensia X11 Xnamespace, care oferă izolare pentru clienți prin partajare la nivelul spațiilor de nume). Suportul pentru lucrul direct cu Wayland a fost realizat pentru majoritatea bibliotecilor grafice utilizate în Linux, inclusiv GTK, Qt, SDL, FLTK, wxWidgets, Clutter și EFL (Enlightenment Foundation Library).
Interacțiunea cu hardware-ul în Wayland/Weston, cum ar fi inițializarea, comutarea modurilor video (drm modesetting) și gestionarea memoriei (GEM pentru i915 și TTM pentru radeon și nouveau) plăcilor grafice, poate fi realizată direct printr-un modul care funcționează la nivel de kernel, ceea ce permite evitarea privilegiilor de superuser. Pentru a permite execuția aplicațiilor X11 standard într-un mediu bazat pe Wayland, este utilizat componenta DDX XWayland (Device-Dependent X), care are o organizare similară cu Xwin și Xquartz pentru platformele Win32 și macOS.
Sursa: opennet.ro
