Wayland est un protocole informatique qui spécifie la communication entre un serveur d'affichage et ses clients. Un serveur d'affichage utilisant le protocole Wayland est appelé un compositeur Wayland, parce qu'il assume additionnellement la tâche de composition d'une gestionnaire de fenêtre.
Le but principal de Wayland est de remplacer le système X Window (connu aussi comme X11 ou X.org) par un système de fenêtrage moderne, sécurisé et plus simple. Dans le cadre de ses efforts, le projet Wayland développe aussi une implémentation de référence du compositeur de Wayland appelé Weston. Les principaux bureaux tels que KDE Plasma 5 et GNOME ont implémenté leur propre compositeur Wayland.
Contents
- Utilisation
- Tester Wayland
- Xwayland
- Dépannage
-
FAQ
- Pourquoi Wayland est nécessaire ?
- Les applications ne peuvent pas partager des informations entre elles… Comment puis-je alors copier et coller ?
- Je suis habitué à exécuter divers programmes (par exemple, Synaptic) en tant que superutilisateur dans ma session X. Comment cela fonctionnera-t-il sous Wayland ?
- J'exécute divers programmes sur le réseau, par exemple via le déport d'affichage (X11 forwarding) de ssh, ou xhost. Comment cela fonctionnera-t-il sous Wayland ?
- Je partage des moniteurs entre des systèmes utilisant x2x. Comment cela fonctionnera-t-il sous Wayland ?
- Comment puis-je connaître les protocoles Wayland supportés par un compositeur Wayland ?
- Plus de lectures
Utilisation
Prérequis matériels
Tout d'abord, la compatibilité matérielle devrait être vérifiée selon le choix du bureau. Les API actuellement supportées sont GBM et EGLStreams. Les GPU Nvidia utilisant le pilote privatif supporte EGLStreams, alors que la combinaison des autres cartes graphiques et pilotes supportent GBM. Un compositeur Wayland a besoin de prendre en charge explicitement l'une ou l'autre de ces API avant de fonctionner.
En l'état actuel, GNOME (par le biais de Mutter) supporte GBM et EGLStreams. KDE Plasma (utilisant KWin) supporte GBM dans toutes ses versions, et EGLStreams depuis la version 5.16 de Plasma. Tous les autres compositeurs ne supportent que GBM et ne fonctionnent pas avec le pilote privatif Nvidia.
Bureaux
Gnome
Supporté depuis la version 3.20
La session Wayland est construite au sein de GNOME et devrait être une option de votre gestionnaire d'affichage simplement après l'installation de GNOME.
En tant qu'environnement de bureau Debian, Wayland est utilisé par défaut depuis Debian 10 ou plus récent ; les plus vieilles versions utilisent Xorg par défaut.
KDE
Supporté depuis la version 5.4
KDE Plasma requiert l'installation du paquet plasma-workspace-wayland, qui n'est pas par défaut. Cela suffit normalement pour les fonctionnalités basiques, toutefois nous vous recommandons de lire la section détaillé du wiki pour ?KDE / Wayland spécifiquement si vous utilisez un GPU Nvidia.
Enlightenment
Non supporté
Le support est entrain d'être ajouté.
Hawaii
Non supporté
Cinnamon
Non supporté
La prise en charge est en cours de discussion.
MATE
Non supporté
Le support est planifié, depuis 2014, et mis à jour en 2019.
XFCE
Non supporté
Le support est en cours de travail.
Compositeurs
D'autres compositeurs supportés peuvent être intéressants :
weston (le compositeur Wayland de référence),
sway (un remplaçant quasi immédiat d'i3): (site web, Github project) (Arrêt de la prise en chage du pilote privatif NVidia EGL à partir de la version 1.0.)
Fireplace (pas encore de paquet Debian) (gelé en amont),
cage - compositeur kiosk pour Wayland,
phoc - Compositeur Wayland pour téléphones mobiles,
wayfire - Compositeur 3D Wayland.
Gestionnaires de fenêtres et Compositeurs
Non supportés
i3: FAQ, discussion.
- D'autres gestionnaires de fenêtres X11 qui ne peuvent pas être pris en charge.
Trousses à outils
Introduction
Les applications GTK 3 et QT 5 utilisant les bibliothèques systèmes devraient gérer automatiquement Wayland. Certaines utilisent des versions liées statiquement ou désactivent explicitement le support de Wayland pour diverses raisons (tels KeePassXC) requièrent l'utilisation de drapeaux ou de variables d'environnement à paramétrer.
Les applications utilisant X11 fonctionneront bien avec Waylant via la couche de compatibilité Xwaylantd, toutefois il peut y avoir quelques problèmes et autres bogues. Lorsque c'est possible, utiliser une application dans son mode Wayland natif est préférable.
pipewire est requis en ajout à l'un des paquets xdg-desktop-portal spécifiques aux bureaux pour prendre en charge la capture, la diffusion et le partage d'écran.
GTK3
Supporté depuis la version 3.20
La variable d'environnement GDK_BACKEND, quand elle est paramétrée sur "wayland", forcera les applications GTK3 à fonctionner avec Wayland. De même, paramétrer à "x11" forcera leur exécution dans X11 (ce qui est utile pour forcer les applications à utiliser Xwayland qui ont des problèmes de compatibilité lorsqu'elles fonctionnent dans leur mode Wayland natif).
Noter que certaines applications Electron (Slack, Element, Discord, etc) ou chromium (861796) peuvent ne pas fonctionner lorsque GDK_BACKEND est paramétrée sur "wayland".
Clutter
Supporté
La variable d'environnement CLUTTER_BACKEND quand elle est paramétrée à "wayland" forcera les applications Clutter à utiliser Wayland.
QT
Support de QT depuis la version 5
Le paquet qtwayland5 installera le plugin de plateforme pertinent permettant aux applications Wayland de fonctionner nativement avec Qt.
Il est recommandé de paramétrer la variable d'environnement QT_QPA_PLATFORM à "wayland;xcb" ainsi les applications préférant Wayland utiliseront X11 seulement en secours. Bien sûr, vous pouvez spécifier aussi bien soit "wayland" ou "xcb" pour forcer l'un ou l'autre.
Le drapeau -platform wayland peut aussi être utilisé pour forcer plus simplement la plupart des applications Qt à utiliser Wayland.
SDL1
Non supporté
La trousse à outil est en mode maintenance, et n'aura pas de support de Wayland. Il existe un wrapper compatible avec SDL1 qui utilise SDL2 comme backend (libsdl12-compat), qui doit être packagé (985170), ce qui devrait ajouter de manière transparente le support de Wayland. Dans le cas contraire, les applications utilisant cette boîte à outils doivent être portées vers SDL2. De plus, certaines applications SDL 1 risquent de planter si elles démarrent avec la variable d'environnement SDL_VIDEODRIVER est paramétrée sur "wayland".
Ci-dessous un liste de suivi des applications nécessitant un port :
SDL2
Supporté depuis la version 2.02
Pour que les jeux, les applications utilisent SDL 2 en tant que boites à outils, paramétrez la variable d'environnement SDL_VIDEODRIVER à "wayland". Notez que faire cela au niveau du système n'est pas recommandé, car beaucoup d'applications propriétaires utilisent des versions de SDL 2 liées statiquement, qui sont veillent et peuvent planter lorsque l'utilisation de Wayland est forcée.
EFL
Supporté
GLFW
Supporté depuis la version 3.2
FLTK
Non supporté
La boîte à outils ne prend pas en charge actuellement Wayland. Les progrès sont suivis sur 984620.
Gestionnaires de sessions
GDM3
GDM (GNOME Display Manager) utilisera automatiquement Wayland lorsqu'il est pris en charge, excepté avec les pilotes propriétaires Nvidia ; dans ce contexte, il basculera sur X11 du fait d'instabilité.
Pour utiliser X11 par défaut, décommenter la variable WaylandEnable=false dans le fichier /etc/gdm3/daemon.conf.
SDDM
Le support de Wayland pour SDDM est en progrès. Actuellement, c'est X11 qui est utilisé par défaut. Toutefois, SDDM est capable de démarrer une session Wayland en tant que bureau.
LightDM
Il y a un tout petit espoir que LightDM obtienne un support natif de Wayland, toutefois, il peut démarrer une session Wayland en tant que bureau.
Applications
Chromium
Supporté
Wayland est supporté en amont via le nouveau backend Ozone. Avant de l'activer, assurez-vous de son fonctionnant en exécutant Chromimu avec l'option --ozone-platform=wayland. Une fois que vous avez vérifié que tout fonctionne correctement, écrivez chrome://flags dans la barre d'adresse, cherchez ozone et modifiez "Preferred Ozone Platform" sur "Auto". Fermez Chromium pour le redémarrer ; il détectera automatiquement l'utilisation de Wayland.
Firefox
Supporté
La variable d'environnement MOZ_ENABLE_WAYLAND peut être paramétrée à "1" pour forcer l'utilisation de Wayland.
LibreOffice
Supporté, mais non actif par défaut
LibreOffice supporte Wayland via des modules additionnels de son Système d'Abstraction de Calques (SAL — System Abstraction Layer), dans des paquets tels que libreoffice-gtk3, libreoffice-plasma, libreoffice-kf5 et libreoffice-qt5.
Par défaut, il essayera de détecter l'environnement de Bureau en cours, ce qui requiert que le backend SAL correspondant soit installé. S'il ne peut le détecter, mais qu'il détecte l'utilisation de Wayland, il utilisera par défaut le backend de GTK3, mais échouera si le plugin n'est pas installé.
La variable d'environnnement SAL_USE_VCLPLUGIN peut être paramétrée soit pour "gtk3", "kf5" ou "qt5" afin de forcer le backend spécifique, par exemple lors de l'utilisation d'un compositeur, et non pas d'un environnement de Bureau.
Java
Support depuis OpenJDK 16 ?
Depuis OpenJDK 16, le JRE peut charger dynamiquement GTK 3 (qui prend en charge Wayland) ; il semble que cela est supporté, selon cette discussion.
La variable d'environnement _JAVA_AWT_WM_NONREPARENTING peut être paramétrée à "1" pour fixer le mauvais comportement des applications qui démarrent avec une écran blanc/vide.
Emacs
Support partiel
Emacs n'étant pas véritable application GTK 3, il continue de fonctionner avec X11, il utilisera donc XWayland.
Vim
Support partiel
Similaire à Emacs, les progrès sont visibles sur 819954.
Outils natifs
Certains outils Wayland natifs peuvent être utiles pour paramétrer de tels environnements. Notez que tous (excepté foot) doivent seulement être exécutés sous wl-roots basé sur le gestionnaire de fenêtres.
SwayOSD fenêtre OSD pour le contrôle de volume
eww widget système
GTKlock vérouillage d'écran sous wl-roots
Tester Wayland
Pour tester Wayland, vous aurez besoin d'avoir un compositeur compatible installé. Un compositeur Wayland combine les rôles du gestionnaire de fenêtres X, du gestionnaire de compositeur et du serveur d'affichage. Les principaux Bureaux supportent bien Wayland, mais pour des propos de test, Weston est l'implémentation de référence du concept.
Vous pouvez tester Weston directement depuis une session X régulière, simplement en installant le paquet weston et en exécutant weston dans une session de terminal/console. Cela démarrera une fenêtre Wayland dans votre session X, vous pourrez tester tout ce que vous voulez.
Vous pouvez aussi tester directement le compositeur Wayland mutter de GNOME :
mutter --nested --wayland
Ensuite, d'autres clients Wayland se présenteront dans la fenêtre. Essayez, par exemple, de démarrer gnome-terminal.
Si vous avez basculer avec succès et que vous voulez savoir quelle application en cours utilisent nativement Wayland ou XWayland, la manière la plus facile est d'exécuter le programme xeyes, et de vérifier les yeux qui suivent le curseur à l'intérieur de la fenêtre d'application.
Xwayland
Pour la rétro-compatibilité, n'importe quel programme tournera sous Xwayland. Installer le paquet xwayland, si ce n'est pas déjà fait pour le bureau de votre choix.
Pour utiliser le compositeur Westion, ajoutez les lignes suivantes au fichier ~/.config/weston.ini :
[core] xwayland=true [xwayland] path=/usr/bin/Xwayland
Les améliorations de performance et de sécurité de Wayland ne sont toutefois pas obtenuse avec Xwayland.
Dépannage
Xresources ne charge pas
C'est un problème connu. En 2015, il a été décidé que les ressources qui étaient trop lentes à charger seraient supprimées de la session principale de GNOME ; lisez Redhat's bugzilla pour avoir plus d'informations.
Travail en cours : exécuter à la main ou paramétrer quelque chose pour démarrer automatiquement lors de la connexion à la session.
xrdb -load .Xsession
FAQ
Pourquoi Wayland est nécessaire ?
Wayland permet une meilleure isolation entre les processus : une fenêtre ne peut pas accéder aux ressources depuis une autre fenêtre, ou injecter une saisie clavier dedans.
Wayland est potentiellement plus rapide, en réduisant la somme de code entre les processus et le matériel, en déléguant beaucoup de choses aux processus eux-mêmes.
Lisez aussi la FAQ de Wayland pour plus d'informations.
Les applications ne peuvent pas partager des informations entre elles… Comment puis-je alors copier et coller ?
Le presse-papiers devrait fonctionner normalement entre les applications X11 et Wayland dans la plupart des sessions, toutefois c'est le compositeur Wayland qui doit le négocier.
Je suis habitué à exécuter divers programmes (par exemple, Synaptic) en tant que superutilisateur dans ma session X. Comment cela fonctionnera-t-il sous Wayland ?
(En fait, synaptic a été enlevé de Buster car il ne fonctionne pas sous Wayland.)
Il est prévu d'autoriser les applications X11 exécutées en tant qu'administrateur à utiliser XWayland, mais les applications Wayland natives doivent être restructurées pour partie en tant qu'interface graphique et tant que racine.
J'exécute divers programmes sur le réseau, par exemple via le déport d'affichage (X11 forwarding) de ssh, ou xhost. Comment cela fonctionnera-t-il sous Wayland ?
Le déport d'affichage X11 de SSH fonctionne sous Wayland comme pour les applications X11 via XWayland.
Le déport natif d'affichage des applications Wayland ne fonctionnent pas, voir waypipe.
Je partage des moniteurs entre des systèmes utilisant x2x. Comment cela fonctionnera-t-il sous Wayland ?
Le partage d'écran avec Wayland en est à ses débuts. Actuellement, les plus gros progrès ont été fait dans Chromium avec les paquets pipewire et xdg-desktop-portal qui peuvent ajouter le partage d'écran dans WebRTC. Une fois ces paquets installés, le support de WebRTC PipeWire doit toujours être ajouté en tant que drapeau à Chromium, ce qui peut être fait depuis la barre d'adresse : chrome://flags/#enable-webrtc-pipewire-capturer
Comment puis-je connaître les protocoles Wayland supportés par un compositeur Wayland ?
Utilisez la commande wayland-info fournie par le paquet wayland-utils. Notez qu'elle remplace la commande weston-info (dépréciée en amont).