È stato pubblicato il rilascio del pacchetto wayland-protocols 1.36, contenente un insieme di protocolli e estensioni che ampliano le capacità del protocollo base Wayland e forniscono le funzionalità necessarie per costruire server compositi e ambienti utente.
Tutti i protocolli passano attraverso tre fasi: sviluppo, testing e stabilizzazione. Al termine della fase di sviluppo (categoria "unstable"), il protocollo viene inserito nel ramo "staging" e ufficialmente incluso nel pacchetto wayland-protocols, e dopo il completamento del testing viene spostato nella categoria stabile. I protocolli della categoria "staging" possono già essere utilizzati in server e client compositi, dove è richiesta la funzionalità associata. A differenza della categoria "unstable", in "staging" è vietato apportare modifiche che interrompano la compatibilità, ma in caso di problemi e difetti emersi durante il testing, non si esclude la sostituzione con una nuova versione significativa del protocollo o con un'altra estensione di Wayland.
Nella nuova versione:
- È stato aggiunto alla categoria "staging" il protocollo xdg-toplevel-icon, progettato per associare un'icona a una finestra di livello superiore.
- Sono stati aggiunti alla categoria "staging" i protocolli ext-image-capture-source e ext-image-copy-capture per organizzare la cattura dei contenuti visualizzati sullo schermo.
Attualmente, il pacchetto wayland-protocols include i seguenti protocolli stabili, in cui è garantita la retrocompatibilità:
- «viewporter» — consente al client di eseguire operazioni di ridimensionamento e ritaglio dei bordi della superficie sul lato server.
- «presentation-time» — gestisce la visualizzazione dei video.
- "xdg-shell" è un'interfaccia per la creazione e l'interazione con le superfici come finestre, consentendo di spostarle sullo schermo, minimizzarle, massimizzarle, cambiarne le dimensioni, ecc.
- "linux-dmabuf" consente la condivisione di più schede grafiche utilizzando la tecnologia DMA-BUF (consente di creare wl_buffer basato su DMA-BUF).
- «tablet» — organizzazione dell'input da tablet grafici.
Protocolli testati nella branch «staging»:
- drm-lease — fornisce le risorse necessarie per creare un'immagine stereoscopica con buffer diversi per l'occhio sinistro e destro quando visualizzata su visori VR.
- «ext-session-lock» — definisce i mezzi per il blocco della sessione, ad esempio durante l'attivazione dello screensaver o la visualizzazione di una finestra di dialogo per l'autenticazione.
- «single-pixel-buffer» — consente la creazione di buffer a singolo pixel che includono quattro valori RGBA a 32 bit.
- «xdg-activation» — consente di passare il focus tra diverse superfici di primo livello (ad esempio, mediante xdg-activation, un'applicazione può trasferire il focus a un'altra).
- content-type consente ai client di inviare informazioni al compositore server sul contenuto visualizzato, che possono essere utilizzate per ottimizzare il comportamento in base al contenuto, ad esempio impostando proprietà DRM specifiche, come il "content type". È dichiarato il supporto per i seguenti tipi di contenuto: none (nessuna informazione sul tipo di dati), photo (visualizzazione di foto digitali con minima elaborazione), video (video o animazione, è richiesta una sincronizzazione più precisa per evitare lag) e game (esecuzione di giochi, è richiesta un'uscita con minima latenza).
- ext-idle-notify — consente ai server compositi di inviare ai client notifiche sull'inattività dell'utente, che possono essere utilizzate per attivare modalità di risparmio energetico aggiuntive dopo un certo periodo di inattività.
- tearing-control — consente di disabilitare la sincronizzazione verticale (VSync) con impulsi di spegnimento nei programmi a schermo intero, utilizzata per prevenire la comparsa di tearing durante l'uscita. Negli applicativi multimediali, la comparsa di artefatti dovuti al tearing è un effetto indesiderato, ma nei programmi di gioco è possibile tollerare gli artefatti se la loro eliminazione porta a ritardi aggiuntivi.
- ext-foreign-toplevel-list — ricezione di informazioni sulle superfici posizionate al livello più alto (toplevel), che consentono di organizzare la fissazione delle finestre sopra altro contenuto, ad esempio per collegare pannelli e interruttori personalizzati.
- security-context — consente di identificare i client che utilizzano l'isolamento sandbox. Un client può registrare una nuova connessione a un server composito basato su Wayland e associarvi un contesto di sicurezza, dopo di che, in conformità con il contesto di sicurezza specificato, il gestore composito limiterà le funzionalità disponibili per la connessione stabilita.
- cursor-shape — un modo alternativo per configurare l'aspetto del cursore, basato sulla trasmissione di una serie di immagini di cursore anziché sull'associazione a una superficie (wl_surface).
- «ext-transient-seat» è progettato per creare sessioni indipendenti temporanee (seat), destinate ad essere utilizzate insieme a dispositivi di input virtuali. Ad esempio, nell'implementazione della possibilità di collegarsi a desktop remoto il protocollo consente di creare per ogni utente una sessione separata con tastiera e mouse virtuali.
- «xdg-toplevel-drag» — estende il meccanismo di «drag & drop» con la possibilità di associare finestre di livello superiore all'operazione di spostamento, che può essere utilizzata, ad esempio, per organizzare il trascinamento con il mouse di barre degli strumenti o schede del browser. Il nuovo protocollo consente di creare parti distaccabili della finestra, che diventano nuove finestre durante il trascinamento e possono essere spostate sopra una finestra esistente prima di essere riattaccate.
- «xdg-dialog» — consente di assegnare alle superfici di livello superiore attributi specifici per le finestre di dialogo, ad esempio, è possibile creare dialoghi modali che bloccano l'interazione dell'utente con il resto dell'interfaccia.
- «linux-drm-syncobj» offre strumenti per la sincronizzazione esplicita dei buffer tramite oggetti di sincronizzazione DRM (Direct Rendering Manager). Si prevede che, nel contesto della sincronizzazione durante il rendering nel buffer, il protocollo proposto migliori l'interazione con i driver basati sulle API grafiche Vulkan e OpenGL (l'implementazione si basa su gestori nei driver). Il nuovo protocollo consente di garantire che l'operazione di rendering nel buffer sia completata prima che il gestore dei compositi visualizzi tale buffer.
- alpha-modifier, che consente ai clienti di modificare il livello di trasparenza della superficie e di delegare le operazioni di gestione della trasparenza al server di composizione, che a sua volta può inoltrare queste operazioni a KMS.
I protocolli in fase di sviluppo nel ramo «unstable»:
- «fullscreen-shell» — gestione delle operazioni in modalità schermo intero.
- «input-method» — elaborazione dei metodi di input.
- «idle-inhibit» — blocco dell'attivazione dello screensaver (salvaschermo).
- «input-timestamps» — registrazioni temporali per eventi di input.
- «keyboard-shortcuts-inhibit» — gestione delle combinazioni di tasti e delle scorciatoie da tastiera.
- «linux-explicit-synchronization» — meccanismo di sincronizzazione dei buffer specifico per Linux legato alla superficie.
- «pointer-gestures» — gestione dei gesti su schermi tattili.
- «pointer constraints» — vincoli sui puntatori (blocco).
- «primary-selection» — analogamente a X11, gestisce il funzionamento del buffer di copia primario (primary selection), il cui inserimento avviene normalmente con il pulsante centrale del mouse.
- «relative pointer events» — eventi relativi ai puntatori.
- «text-input» — organizzazione dell'input di testo.
- «xdg-foreign» — interfaccia di interazione con le superfici di un client «vicino».
- «xdg-decoration» — rendering delle decorazioni delle finestre lato server.
- «xdg-output» — informazioni supplementari sull'output video (utilizzato per il ridimensionamento frazionale).
- «xwayland-keyboard-grab» — acquisizione dell'input nelle applicazioni XWayland.
Fonte: opennet.ru
