Dopo quasi un anno di sviluppo, è stato rilasciato il compositore di finestre Sway 1.12, costruito 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 è destinato all'uso su Linux e FreeBSD.
Sway consente di utilizzare il posizionamento logico delle finestre (il gestore di finestre seleziona dinamicamente la posizione e la dimensione di una finestra tenendo conto delle altre finestre aperte e senza sovrapposizioni), anziché il tradizionale posizionamento spaziale (l'utente sceglie uno spazio e una dimensione casuali per la finestra con possibili sovrapposizioni). Le finestre sono disposte a formare una griglia, ottimizzando lo spazio dello schermo e consentendo di manipolare rapidamente le finestre utilizzando solo la tastiera. La compatibilità con i3 è garantita a livello di comandi, file di configurazione e IPC, permettendo di utilizzare Sway come una sostituzione trasparente di i3, usando 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 progetto modulare costruito sopra la libreria wlroots, che include tutte le primitive di base per gestire un gestore di composizione. Wlroots include backend per
astrarre l'accesso allo schermo, ai dispositivi di input, per il rendering senza accesso diretto a OpenGL, l'interazione con KMS/DRM, libinput, Wayland e X11 (fornendo un'interfaccia per eseguire applicazioni X11 basate su Xwayland). Oltre a Sway, la libreria wlroots è ampiamente utilizzata anche in altri progetti. Oltre al supporto per i linguaggi C/C++, fornisce anche binding per i linguaggi Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python e Rust.
Nel nuovo rilascio:
- È stata aggiunta la possibilità di catturare finestre singole.
- È stato implementato il supporto per l'output in gamma dinamica estesa HDR10 utilizzando il rendering basato sull'API Vulkan.
- È stato aggiunto il supporto per i protocolli Wayland:
- color-management-v1 per la gestione del colore e il supporto della gamma dinamica estesa (HDR, High Dynamic Range).
- color-representation-v1 per definire la rappresentazione del colore della superficie Wayland.
- xdg-toplevel-tag-v1 per consentire ai client Wayland di allegare etichette alle superfici di livello superiore, che il compositore un server può essere utilizzato per ripristinare la posizione, le dimensioni e le proprietà delle finestre dopo un riavvio, nonché per definire regole speciali per diversi tipi di finestre.
- ext-workspace-v1 per creare pannelli o indicatori che mostrano l'elenco degli disponibili scrivanie virtuali e consentono di passare tra di essi.
- wl_fixes per risolvere problemi con altre interfacce di programmazione dei protocolli di base che non possono essere risolti dalle capacità native di queste interfacce.
- È stata implementata l'opzione «—device-primaries», specificando la quale il profilo colore viene creato sulla base dei dati forniti dal monitor tramite EDID.
- Aggiunta la supporto per rilevare la presenza di un keypad, utilizzando il flag LIBINPUT_SWITCH_KEYPAD_SLIDE in libinput.
- Nel file di configurazione sono incluse le mappature per tasti multimediali speciali (mettere in pausa, riavviare la riproduzione, brano successivo, ecc.) per controllare la riproduzione di contenuti multimediali tramite l'utility playerctl.
- Il profilo colore di output srgb è stato convertito per utilizzare una funzione di trasferimento sRGB a pezzi (piece-wise) anziché gamma 2.2 (per gamma 2.2 è necessario utilizzare un profilo separato gamma22, che viene applicato per impostazione predefinita).
- L'avvio in sistemi con GPU non supportate (ad esempio, utilizzando driver proprietari NVIDIA) ora genera un avviso invece di terminare con un errore. L'avviso può essere disattivato utilizzando il flag «—unsupported-gpu» o la variabile d'ambiente SWAY_UNSUPPORTED_GPU.
- Aggiunto il supporto ufficiale per l'utilizzo di gestori di visualizzazione per avviare Sway.
- Sfruttate le nuove funzionalità della libreria wlroots 0.20. Tra le novità della nuova versione di wlroots: supporto per la definizione della rappresentazione del colore della superficie Wayland, gestione del colore e utilizzo di HDR tramite i protocolli color-representation-v1 e color-management-v1. Supporto per i protocolli Wayland cursor-shape-v1 per personalizzare l'aspetto del cursore.
ext-workspace-v1 per l'uso del concetto di desktop virtuali e xdg-toplevel-tag-v1 per identificare finestre/superfici tramite l'associazione di tag.

Fonte: opennet.ru
