Dopo 8 mesi di sviluppo, è stata pubblicata la versione 1.10 del gestore di compositing Sway, costruita utilizzando il protocollo Wayland e compatibile con il gestore di finestre a mosaico i3 e la barra i3bar. Il codice del progetto è scritto in linguaggio C e distribuito con licenza MIT. Il progetto è concepito per l'uso su Linux e FreeBSD.
Sway permette di posizionare le finestre sullo schermo in modo logico anziché spaziale. Le finestre sono disposte formando una griglia che utilizza in modo ottimale lo spazio dello schermo e consente di manipolare rapidamente le finestre esclusivamente tramite tastiera. La compatibilità con i3 è garantita a livello di comandi, file di configurazione e IPC, permettendo di utilizzare Sway come un sostituto trasparente di i3, che impiega Wayland invece di X11.
Per la creazione di un ambiente utente completo sono disponibili componenti ausiliari: swayidle (processo in background con implementazione della modalità di attesa), swaylock (blocco schermo), mako (gestore delle notifiche), grim (creazione di screenshot), slurp (selezione di aree sullo schermo), wf-recorder (cattura video), waybar (barra delle applicazioni), virtboard (tastiera su schermo), wl-clipboard (gestione degli appunti), wallutils (gestione degli sfondi del desktop).
Sway si sviluppa come un progetto modulare, costruito sopra la libreria wlroots, che incapsula tutti i primitivi di base per l'organizzazione del lavoro del gestore di compositing. Wlroots include backend per astrarre l'accesso allo schermo, ai dispositivi di input, al rendering senza contatto diretto con OpenGL, all'interazione con KMS/DRM, libinput, Wayland e X11 (fornendo un layer per eseguire applicazioni X11 basate su Xwayland). Oltre a Sway, la libreria wlroots è utilizzata anche in altri progetti. Oltre al supporto per i linguaggi C/C++, sono disponibili wrapper per i linguaggi Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python e Rust.
Nel nuovo rilascio:
- Sono state attivate nuove funzionalità della libreria wlroots 0.18, come il supporto per i protocolli Wayland linux-drm-syncobj-v1, alpha-modifier-v1, ext-foreign-toplevel-list-v1 ed ext-transient-seat-v1, la possibilità di utilizzare profili di colore ICC per l'API grafica Vulkan, il supporto per l'operazione di reset della GPU e una nuova API di rendering, senza uno stato intermedio (stateless) che consente di ottenere informazioni sui buffer di pixel dalla GPU.
- Il codice di rendering è stato riscritto utilizzando l'API basata su graph scene aggiunta in wlroots. Si è notato che la riprogettazione ha consentito di ottenere un aumento delle prestazioni.
- È stato garantito il ripristino dello stato dopo il reset della GPU.
- È stato aggiunto un comando per utilizzare i profili ICC per i dispositivi di output.
- È stato migliorato l'algoritmo di configurazione dei dispositivi di output.
- È stata fornita la possibilità di utilizzare l'estensione del protocollo «tearing-control-v1» per disabilitare la sincronizzazione verticale (VSync) con impulso di spegnimento nei programmi a schermo intero, utilizzata per prevenire il tearing. Nei programmi multimediali, l'apparizione di artefatti a causa del tearing è un effetto indesiderato, ma nei programmi di gioco si può tollerare la presenza di artefatti se la loro rimozione comporta ritardi aggiuntivi.
- Aggiunto il supporto per l'estensione del protocollo «ext-transient-seat-v1» per la creazione di sessioni indipendenti temporanee (seat), progettate per essere utilizzate insieme a dispositivi di input virtuali. Ad esempio, nelle applicazioni di connessione a desktop remoto, come il client VNC wayvn, è possibile creare una sessione separata con tastiera e mouse virtuali per ogni utente.
- Aggiunto il supporto per l'estensione del protocollo «ext-foreign-toplevel-list-v1» per ottenere informazioni sulle superfici posizionate al livello più alto (toplevel). Il protocollo consente di organizzare il posizionamento delle finestre sopra altro contenuto, ad esempio per implementare pannelli e interruttori delle finestre.
- Aggiunto il supporto per la quinta versione del protocollo «xdg-shell», che fornisce funzionalità per modificare la posizione delle finestre a comparsa e implementare pulsanti per minimizzare e ripristinare le finestre durante la decorazione delle finestre sul lato client (CSD).
- Il pacchetto dmenu_run, che consente di utilizzare dmenu come interfaccia per l'avvio delle applicazioni, è stato rimosso dalle dipendenze nella configurazione predefinita.
- Aggiunto l'uso di pactl nel file di configurazione predefinito per impostare scorciatoie da tastiera per modificare il volume e la luminosità, nonché per richiamare lo strumento grim per creare uno screenshot.
- Disattivato per impostazione predefinita il supporto del protocollo Wayland obsoleto wl_drm, sostituito dal protocollo linux-dmabuf-v1.
- Rimossa l'opzione di compilazione per abilitare il supporto Xwayland (l'abilitazione di Xwayland dipende ora dalle impostazioni di compilazione di wlroots).

Fonte: opennet.ru
