Dopo 13 mesi di sviluppo, è stato presentato il rilascio stabile del protocollo, del meccanismo di interazione tra processi e delle librerie Wayland 1.24. Il ramo 1.24 è retrocompatibile a livello di API e ABI con le versioni 1.x e contiene principalmente correzioni di bug e aggiornamenti minori del protocollo. I risultati del progetto sono distribuiti sotto licenza MIT. Il server compositore di riferimento Weston, che fornisce codice e esempi funzionanti per l'utilizzo di Wayland in ambienti desktop e soluzioni integrate, si sviluppa all'interno di un ciclo di sviluppo separato.
Principali modifiche al protocollo:
- Implementato l'interfaccia wl_fixes, che consente di risolvere problemi con altre interfacce software dei protocolli di base che non possono essere risolti con le proprie capacità. Ad esempio, la richiesta «wl_fixes::destroy_registry» consente di eliminare l'oggetto wl_registry, dopo di che il client non potrà più utilizzarlo, e il server compositore smetterà di inviare eventi attraverso di esso.
- Nell'interfaccia wl_keyboard::key è stato implementato lo stato pseudo «repeated», che indica che un tasto è premuto. Un tasto può passare allo stato «repeated» solo dopo essere passato nello stato «pressed», ma prima dello stato «released». Gli eventi legati al nuovo stato possono essere generati più volte finché un tasto è premuto. Questa modifica consente ai server compositori di gestire i tasti ripetuti mentre vengono tenuti premuti come stati distinti, piuttosto che semplicemente come un flusso di eventi ripetuti di pressione («pressed»), il che può essere utile per gestire desktop remoti.
- Aggiunte le funzioni wl_display_dispatch_queue_timeout() e wl_display_dispatch_timeout() per la gestione degli eventi nella coda con il timeout (le funzioni wl_display_dispatch e wl_display_dispatch_queue restituiscono 0 solo in assenza di eventi, mentre le varianti *_timeout anche al verificarsi del timeout).
- Aggiunte le funzioni wl_shm_buffer_ref() e wl_shm_buffer_unref() per accedere alla memoria condivisa associata a un buffer wl_shm_buffer, dopo la sua eliminazione (ad esempio, quando il client termina l'esecuzione). Queste funzioni consentono di dissociare il buffer wl_shm_buffer dalla vita del principale recurso wl_buffer, quando il server compositore ha bisogno di ritardare il passaggio a un nuovo stato.
- Sono state aggiunte le funzioni wl_proxy_get_interface() e wl_resource_get_interface(), che restituiscono wl_interface per la risorsa specificata, cosa richiesta nei binding per linguaggi a tipizzazione dinamica.
- È stata aggiunta la funzione wl_resource_post_error_vargs(), che funge da alternativa alla funzione wl_resource_post_error() con la possibilità di passare un elenco di argomenti per formattare la stringa (va_list).
Gli eventi più significativi legati a Wayland che si sono verificati dalla pubblicazione dell'ultima versione:
- Miglioramento del supporto di Wayland nei driver proprietari NVIDIA.
- KDE prevede di mantenere solo il supporto per Wayland. Separazione del codice kwin_x11 e kwin_wayland.
- Ubuntu e Kubuntu manterranno solo il supporto per la sessione Wayland in GNOME e KDE.
- In GDM è rimasto solo il supporto per Wayland di default.
- GTK ha declassato il backend per X11 a obsoleto.
- In Fedora 43 è stato deciso di rimuovere dai repository i pacchetti utilizzati in GNOME per lavorare sopra il server X. Tutti gli utenti GNOME con X11 verranno forzati a passare a una sessione basata su Wayland.
- Nell'ambiente desktop Budgie sarà mantenuto solo il supporto per Wayland.
- In Xfce 4.20 è stato implementato il supporto parziale per Wayland.
- MATE 1.28 con supporto sperimentale per Wayland.
- Wayback — un server composito Wayland per l'esecuzione di desktop basati su X11.
- Valve ha avviato il progetto Frog per accelerare la diffusione dei nuovi protocolli Wayland.
- La libreria per la costruzione di interfacce grafiche Cosmoe, che utilizza Wayland e un'API in stile BeOS.
- Abilitazione di default del driver Wayland in Wine.
- Transizione di Raspberry Pi OS all'uso di Wayland.
- Pubblicazione dell'interfaccia grafica FLTK 1.4.0 con supporto per Wayland.
- Nel set Wayland-Protocols è stata aggiunta una fase di avanzamento dei protocolli - 'experimental', mirata a ridurre le barriere all'integrazione dei protocolli, accelerare la disponibilità dei protocolli per gli sviluppatori e incentivare l'implementazione precoce nei progetti esistenti.
- AMD sta sviluppando il proprio server composito ACS, che utilizza Wayland.
- Sette versioni alpha dell'ambiente desktop COSMIC.
- Aggiornamento dei server compositi: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Estensioni dei protocolli aggiunte nell'ultimo anno, che integrano il protocollo base di Wayland e fornite in un pacchetto separato Wayland-Protocols:
- color-management — funzionalità per la gestione del colore e il supporto per un intervallo dinamico di luminosità esteso (HDR, High Dynamic Range).
- color-representation-v1 — attuazione della rappresentazione del colore della superficie Wayland.
- xdg-toplevel-tag — consente ai client Wayland di attaccare tag alle superfici di livello superiore, che il server composito può utilizzare per identificare le finestre dopo il riavvio dell'applicazione.
- ext-background-effect — applicazione di effetti alle parti semitrasparenti della superficie Wayland, come il offuscamento dello sfondo.
- pointer-warp — consente all'applicazione di spostare istantaneamente il cursore nella posizione specificata.
- xx-session-management — ripristino dello stato delle finestre per sessioni interrotte (ad esempio, dopo la chiusura anomala del gestore composito).
- xx-input-method — sviluppo di un nuovo protocollo per l'utilizzo dei metodi di input del testo. ext-data-control — consente ai client privilegiati di gestire l'elaborazione dei dati, ad esempio per implementare i gestori degli appunti.
- ext-workspace — implementa il concetto desktop virtuali e offre eventi con informazioni sullo stato dei desktop, oltre a funzionalità per attivare e disattivare i desktop.
- xdg-system-bell — consente di emettere un segnale di sistema, che può essere utilizzato, ad esempio, come avviso nei terminal emulator.
- xdg-toplevel-icon — per associare un'icona a una finestra di livello superiore.
- ext-image-capture-source e ext-image-copy-capture — cattura del contenuto visualizzato sullo schermo.
- fifo — implementa un meccanismo FIFO (primo ad arrivare, primo ad essere servito) per l'elaborazione della coda di aggiornamento del contenuto della superficie visualizzata.
- commit-timing — consente di associare un vincolo temporale al contenuto della superficie (il server composito deve visualizzare la modifica del contenuto, se possibile, entro il tempo specificato, ma non prima).
Ricordiamo che Wayland è un protocollo di interazione tra il server composito e le applicazioni che vi operano. I client eseguono autonomamente il rendering delle proprie finestre in un buffer separato, trasmettendo informazioni sugli aggiornamenti al server composito, che combina il contenuto dei buffer delle singole applicazioni per formare l'output finale tenendo conto di eventuali dettagli, come la sovrapposizione delle finestre e la trasparenza. In altre parole, il server composito non fornisce un'API per il rendering di singoli elementi, ma opera solo con finestre già formate, il che consente di eliminare il doppio buffering quando si utilizzano librerie di alto livello come GTK e Qt, che si occupano del lavoro di composizione del contenuto delle finestre.
Wayland risolve molti problemi di sicurezza di X11, poiché a differenza di quest'ultimo isola input e output per ogni finestra, non consente al client di accedere al contenuto delle finestre di altri client e non permette la cattura di eventi di input legati ad altre finestre. Il supporto per il funzionamento diretto con Wayland è stato implementato per la maggior parte delle librerie grafiche utilizzate in Linux, tra cui GTK, Qt, SDL, FLTK, wxWidgets, Clutter ed EFL (Enlightenment Foundation Library).
L'interazione con l'hardware in Wayland/Weston, per esempio, l'inizializzazione, il cambio delle modalità video (drm modesetting) e la gestione della memoria (GEM per i915 e TTM per radeon e nouveau) delle schede grafiche, può avvenire direttamente tramite un modulo che opera a livello di kernel, il che consente di evitare i privilegi di superutente. Per garantire il funzionamento delle comuni applicazioni X11 in un ambiente basato su Wayland, viene utilizzato il componente DDX XWayland (Device-Dependent X), la cui organizzazione lavorativa è simile a Xwin e Xquartz per le piattaforme Win32 e macOS.


Fonte: opennet.ru
