Wayland
Wayland est un protocole permettant à un compositeur de communiquer avec ses clients. Un compositeur est un gestionnaire de fenêtres qui utilise un tampon en mémoire pour gérer chaque fenêtre et y appliquer des effets visuels, et les clients du compositeur sont les fenêtres à afficher.
Wayland est aussi le nom de la bibliothèque logicielle implémentant ce protocole.
Wayland remplace l'ancien serveur d'affichage X.org. Il apporte des performances, des fonctionnalités, et un niveau de sécurité adapté à un système moderne. Il est donc le protocole d'affichage par défaut de la variante classique (GNOME) d'Ubuntu.
Une couche de compatibilité, XWayland, permet de faire fonctionner les applications pour X.org avec Wayland. Les anciennes applications peuvent donc utiliser Wayland par ce biais. Un environnement qui supporte ce protocole (GNOME, KDE, Enlightenment …) est cependant nécessaire.
Pourquoi Wayland ?
Jusqu'à présent, l'affichage était géré par X.org, un logiciel proposant une implémentation libre du protocole X11, celui-ci datant des années 1980.
Les usages ont évidemment beaucoup changé depuis, avec entre autre la généralisation d'effets visuels avancés, et donc un rendu complexe pour les interfaces graphiques. X11 n'a pas été conçu pour ce genre de rendu.
De plus, X11 pose de sérieux problèmes de sécurité, puisque les informations sont échangées sans aucun souci de confidentialité entre les différentes fenêtres, et donc les différentes applications, autorisant une application à en "espionner" une autre.
De son côté Wayland gère les entrées et sorties de chaque fenêtre en les isolant, et limite la quantité de code exécuté en tant que root.1)
L'architecture de Wayland est optimisée pour le fonctionnement des compositeurs, et facilite le rendu aujourd'hui complexe de l'image des fenêtres, en toute sécurité et avec de meilleures performances.
Utilisation
Ouvrir une session avec Wayland
Wayland est utilisé par défaut sur Ubuntu.
Connaître le protocole de gestion de fenêtrage actif
La commande ci-dessous devrait retourner soit x11 soit wayland :
echo $XDG_SESSION_TYPE
Weston
Weston est l'implémentation de référence d'un gestionnaire de fenêtre avec composition graphique pour Wayland.
Ce que nous apprend Weston
En matière de performances, on voit que les fenêtres peuvent être pivotées, animées, zoomées, leurs transparences modifiées, etc. bref, des effets de composition plutôt complexes. Pourtant, Weston reste très rapide, fluide et léger en mémoire. En comparaison, les temps de réactions des applications utilisant XWayland se ressentent d'ailleurs parfois.
Avec Wayland, l'enregistrement de l'écran (capture photo ou vidéo) doit être géré par l'environnement, alors qu'il était jusqu'à présent indépendant de l'environnement utilisé.
Il s'agit là d'une question de sécurité : les applications n'ayant pas la possibilité de "connaître" la position et le contenu des fenêtres de leurs voisines avec Wayland, ces informations doivent être "demandées" à l'environnement (et notamment au compositeur en ce qui concerne les fenêtres).
Détecter les applications tournant sur Xwayland
La commande xlsclients liste les applications tournant sous Xwayland.
Une astuce consiste aussi à installer xeyes, lancer l'application, et survoler avec le curseur la fenêtre qu'on souhaite tester : si les yeux suivent le curseur, alors l'application tourne sous Xwayland.2)
Environnements compatibles
Un compositeur implémentant le protocole Wayland (Mutter, Kwin, Enlightenment, Sway, Weston…) est nécessaire (Wayland seul ne fait rien : sans compositeur X.org serait toujours utilisé).
Les environnements de bureau modernes supportent Wayland :
| Environnement | Variante | Commentaire |
|---|---|---|
| GNOME Shell | Ubuntu | Wayland est utilisé par défaut sur Ubuntu avec GNOME Shell depuis Hirsute 21.04. |
| Enlightenment | Aucune variante officielle. | Compatible depuis la version E19 |
| KDE Plasma | Environnement par défaut de Kubuntu | |
| Sway | Aucune variante officielle (paquet sway). | Tiling desktop, successeur de i3 |
| Hyprland | Aucune variante officielle (paquet hyprland). | Tiling desktop avec effets visuels |
Il existe d'autres gestionnaires de fenêtres moins répandus (et absents des dépôts).
Bibliothèques graphiques
GTK+ 3
Régler la variable d'environnement GDK_BACKEND=wayland.
GTK+ 3 est la bibliothèque utilisée par les applications des environnements GNOME, MATE, Cinnamon, Budgie, …
Qt 5
Pour faire fonctionner une application Qt 5 avec le plugin Wayland, régler la variable d'environnement QT_QPA_PLATFORM=wayland-egl (le paquet fournissant le plugin doit être installé).
Qt est la bibliothèque utilisée entre autres par les environnements KDE Plasma, LXQt, ou encore l'interface de LiriOS (non disponible pour Ubuntu).
SDL
Pour lancer une application SDL (principalement des jeux vidéo) sur Wayland, réglez SDL_VIDEODRIVER=wayland.
GLFW
Wayland peut être activé avec l'option CMake -DGLFW_USE_WAYLAND=ON au moment de la compilation.
EFL
Les bibliothèques EFL (environnement Enlightenment et applications liées) supportent totalement Wayland. Voir cette page.
Problèmes connus
Connexion à la session impossible
Tous les gestionnaires de sessions ne sont pas capables de lancer des sessions avec Wayland.
Il faut donc s'assurer d'utiliser un gestionnaire de sessions compatible, comme GDM ou SDDM.
Impossible de lancer une application comme administrateur
Wayland n'autorise pas de manipulations aussi dangereuses : lancer des applications en tant que root représente une surface d'attaque importante. L'élévation des privilèges devra désormais être gérée par chaque application en fonction de ses besoins (voir les applications en exemple dans la note suivante) via polkit.
Applications non-compatibles
Les applications correctement maintenues sont aujourd'hui toutes compatibles avec Wayland, à moins d'être directement liée à X.org. On peut reconnaître ces dernières grâce à leur nom qui commence souvent par un X majuscule (apt list ~n^x -i pour lister les paquets installés dont le nom commence par x – tous ne sont pas concernés).
Dans ces applications non compatibles, on trouve en particulier :
- certaines applications de capture d'écran
- certaines applications de partage d'écran ou de bureau à distance (comme X2Go ou le déport de X avec SSH).
Voir aussi
- (en) Source principale
