Après 7 mois de développement, la version 1.11 du gestionnaire de fenêtres composite Sway, construite avec le protocole Wayland et compatible avec le gestionnaire de fenêtres en mosaïque i3 et le panneau i3bar, a été publiée. Le code du projet est écrit en C et est distribué sous licence MIT. Le projet vise à être utilisé sous Linux et FreeBSD.
Sway permet de placer les fenêtres sur l'écran non pas de manière spatiale, mais logiquement. Les fenêtres s'agencent en formant une grille, optimisant l'utilisation de l'espace à l'écran et permettant de manipuler rapidement les fenêtres uniquement à l'aide du clavier. La compatibilité avec i3 est assurée au niveau des commandes, des fichiers de configuration et IPC, ce qui permet d'utiliser Sway comme un remplacement transparent d'i3, utilisant Wayland au lieu de X11.
Pour aménager un environnement utilisateur complet, des composants associés sont proposés : swayidle (processus d'arrière-plan implémentant un mode veille), swaylock (verrouillage d'écran), mako (gestionnaire de notifications), grim (prise de captures d'écran), slurp (sélection de zone à l'écran), wf-recorder (enregistrement vidéo), waybar (barre d'applications), virtboard (clavier à l'écran), wl-clipboard (gestion du presse-papiers), wallutils (gestion des fonds d'écran).
Sway se développe comme un projet modulaire, construit sur la bibliothèque wlroots, qui regroupe tous les primitives de base nécessaires pour organiser le fonctionnement du gestionnaire de fenêtres composite. Wlroots inclut des backends permettant d'abstraire l'accès à l'écran, aux dispositifs d'entrée, au rendu sans accès direct à OpenGL, et aux interactions avec KMS/DRM, libinput, Wayland et X11 (un intermédiaire est fourni pour exécuter des applications X11 via Xwayland). En plus de Sway, la bibliothèque wlroots est également largement utilisée dans d'autres projets. En plus du support des langages C/C++, des liaisons sont fournies pour Scheme, Common Lisp, Go, Haskell, OCaml, Zig, Python et Rust.
Dans cette nouvelle version :
- La prise en charge du protocole Wayland linux-drm-syncobj-v1 a été ajoutée pour la synchronisation explicite des tampons, garantissant que l'opération de rendu dans le tampon est terminée avant que le gestionnaire de fenêtres composite n'affiche ce tampon.
- La prise en charge du protocole Wayland alpha-modifier-v1 a été ajoutée, permettant aux clients de modifier le niveau de transparence des surfaces et déléguant les opérations d'assurance de transparence au gestionnaire de fenêtres composite, de serveurs, qui peut à son tour rediriger ces opérations vers un module KMS fonctionnant au niveau du noyau.
- La prise en charge des protocoles Wayland ext-image-capture-source et ext-image-copy-capture a été ajoutée pour capturer le contenu affiché à l'écran.
- La prise en charge du protocole Wayland ext-data-control a été ajoutée, permettant aux clients privilégiés de gérer le traitement des données, par exemple, pour mettre en œuvre des gestionnaires de presse-papiers.
- Le mécanisme de communication inter-processus (IPC) a intégré la prise en charge des métadonnées pour les contextes de sécurité, mises en œuvre grâce au protocole Wayland security-context-v1.
- La logique de configuration de la sortie a été améliorée pour un retour plus fluide et rapide sur d'autres appareils.
- Ajout du support des touches de contrôle du pointeur.
- Des combinaisons de touches pour appeler les utilitaires pactl, brightnessctl et grim ont été ajoutées au fichier de configuration par défaut.
- Le menu proposé par défaut a été modifié pour utiliser l'utilitaire wmenu-run et ne dépend plus du script dmenu_path.
- De nouvelles fonctionnalités de la bibliothèque wlroots 0.19 ont été activées. Parmi les changements dans wlroots :
- Protocoles Wayland implémentés :
- color-management-v1 (pour le support HDR10);
- ext-image-capture-source-v1 et ext-image-copy-capture-v1 (pour capturer le contenu de l'écran);
- ext-data-control-v1 (pour contrôler le presse-papiers);
- xdg-toplevel-icon-v1 (pour l'attachement de vos icônes);
- xdg-dialog-v1 (pour créer des boîtes de dialogue avancées);
- xdg-system-bell-v1 (pour émettre un signal);
- ext-idle-notify-v1 (pour suivre l'activité);
- presentation-time (pour le changement adaptatif de la fréquence de rafraîchissement de l'écran);
- wlr-layer-shell-v1.5 (pour définir les limites des zones exclusives sur l'écran).
- Le support de la synchronisation explicite des tampons a été implémenté dans les backend et moteurs de rendu à l'aide d'objets de synchronisation DRM (Direct Rendering Manager).
- Ajout du support Multi-GPU pour les dispositifs de sortie à l'écran, tels que les adaptateurs USB GUD.
- La réalisation du rendu direct (direct scanout) dans les backends prend désormais en charge le recadrage et le redimensionnement des tampons.
- Opérations sur le graphique de scène optimisées.
- Protocoles Wayland implémentés :

Source : opennet.ru
