Dopo 8 mesi di sviluppo è stato rilasciato il gestore composito Sway 1.10, costruito utilizzando il protocollo Wayland e compatibile con il gestore di finestre tiling i3 e la barra i3bar. Il codice del progetto è scritto in C e distribuito con licenza MIT. Il progetto è destinato all'uso su Linux e FreeBSD.
Sway permette di posizionare le finestre sullo schermo non in modo spaziale, ma logico. Le finestre sono disposte in una griglia che utilizza in modo ottimale lo spazio dello schermo e consente di manipolare rapidamente le finestre tramite la 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 utilizza Wayland invece di X11.
Per creare un ambiente utente completo, sono disponibili componenti aggiuntivi: swayidle (un processo in background con implementazione della modalità attesa), swaylock (gestore dello schermo), mako (gestore delle notifiche), grim (creazione di screenshot), slurp (selezione dell'area dello schermo), wf-recorder (cattura video), waybar (barra delle applicazioni), virtboard (tastiera virtuale), wl-clipboard (gestione degli appunti), wallutils (gestione degli sfondi del desktop).
Sway si sviluppa come un progetto modulare, costruito sopra la libreria wlroots, che contiene tutte le primitive di base per organizzare il funzionamento di un gestore composito. Wlroots include backend per astrazioni di accesso allo schermo, dispositivi di input, rendering senza accesso diretto a OpenGL, interazione con KMS/DRM, libinput, Wayland e X11 (fornendo uno strato per eseguire applicazioni X11 su Xwayland). Oltre a Sway, la libreria wlroots è attivamente utilizzata anche in altri progetti. Oltre al supporto per i linguaggi C/C++, sono fornite anche interfacce per i linguaggi Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python e Rust.
Nel nuovo rilascio:
- Sono state implementate 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 e ext-transient-seat-v1, la possibilità di utilizzare profili colore ICC per l'API grafico Vulkan, supporto per l'operazione di reset della GPU e un nuovo API di rendering stateless che consente di ottenere informazioni sui buffer pixel dalla GPU.
- Il codice di rendering è stato riscritto utilizzando l'API basata su grafo della scena (scene graph) recentemente aggiunta a wlroots. È stato notato che la ristrutturazione ha portato a 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 introdotta la possibilità di utilizzare l'estensione del protocollo «tearing-control-v1» per disattivare la sincronizzazione verticale (VSync) con impulso di spegnimento del fotogramma nelle applicazioni a schermo intero, utilizzata per prevenire la comparsa di strappi nell'output (tearing). Nelle applicazioni multimediali, la comparsa di artefatti a causa di strappi è un effetto indesiderato, mentre nei programmi di gioco si può tollerare qualche artefatto se la loro eliminazione comporta ritardi aggiuntivi.
- È stata aggiunta la compatibilità con l'estensione del protocollo «ext-transient-seat-v1» per la creazione di sessioni temporanee indipendenti (seat), progettate per essere utilizzate con dispositivi di input virtuali. Ad esempio, nelle applicazioni di connessione a desktop remoto, come il client VNC wayvn, è possibile creare una sessione separata per ogni utente con una tastiera e un mouse virtuali.
- È stata aggiunta la compatibilità con l'estensione del protocollo «ext-foreign-toplevel-list-v1» per ottenere informazioni sulle superfici posizionate al livello superiore (toplevel). Il protocollo consente di organizzare il fissaggio delle finestre sopra altro contenuto, ad esempio per implementare pannelli e interruttori di finestre.
- È stata aggiunta la supporto per la quinta versione del protocollo «xdg-shell», che offre funzionalità per modificare la posizione delle finestre pop-up e implementare pulsanti di minimizzazione e ripristino delle finestre durante la decorazione delle finestre sul lato client (CSD).
- Il pacchetto dmenu_run, che consente di utilizzare dmenu come interfaccia di avvio delle applicazioni, è stato rimosso dalle dipendenze nella configurazione predefinita.
- È stato aggiunto l'uso di pactl al file di configurazione predefinito per impostare le scorciatoie da tastiera per modificare il volume e la luminosità, oltre a richiamare l'utilità grim per creare screenshot.
- Il supporto per il protocollo Wayland obsoleto wl_drm è disattivato per impostazione predefinita, sostituito dal protocollo linux-dmabuf-v1.
- L'opzione di compilazione per abilitare il supporto per Xwayland è stata rimossa (l'abilitazione di Xwayland dipende ora dalle impostazioni di compilazione di wlroots).

Fonte: opennet.ru
