Dans Linux, chaque application, outil ou fenêtre que vous voyez sur l’écran de votre ordinateur de bureau ou portable provient d’une technologie de serveur d’affichage. Depuis 1987, le standard est le serveur X, la version la plus récente étant X11. Xorg (parfois connu sous le nom de X.org) est l’implémentation open-source la plus populaire d’un serveur X sous Linux.
Mais Wayland fait de la concurrence à Xorg. Wayland a été développé pour créer une approche plus rationalisée qui utilise des processus modernes. Le développement de Wayland a commencé en 2013, et la première version alpha a été publiée en janvier 2021. Depuis 2013, le débat autour de Wayland et Xorg n’a cessé d’enfler.
Dans ce guide complet, je vous explique tout ce qu’il faut savoir sur Wayland, le serveur d’affichage pour Linux, les différences avec X11 et quel est le meilleur.
Table des matières
Qu’est-ce que Wayland
Wayland est un protocole de communication et un serveur d’affichage pour les systèmes Unix-like, principalement utilisé sur les systèmes Linux. Il a été développé comme une alternative au serveur d’affichage X11, qui était le standard de facto depuis de nombreuses années.
Le projet Wayland Display Server a été lancé par Kristian Høgsberg, développeur chez Red Hat, en 2008.
Contrairement à X11, Wayland est conçu pour être plus rapide et réduire la latence. Il simplifie également la gestion des fenêtres et des événements d’entrée
Wayland se compose d’un protocole et d’une implémentation de référence appelée Weston.
Le projet développe également des versions de GTK et de Qt qui rendent vers Wayland au lieu de X. La plupart des applications devraient prendre en charge Wayland par l’intermédiaire de l’une de ces bibliothèques sans modification de l’application.
Wayland est considéré comme le remplaçant du serveur X.Org vieillissant.
Comment fonctionne Wayland
Wayland est conçu de manière modulaire. Il sépare le serveur d’affichage (Wayland compositor) et les clients (applications), ce qui permet une meilleure isolation et une sécurité améliorée.
Le protocole Wayland suit un modèle client-serveur dans lequel les clients sont les applications graphiques qui demandent l’affichage de tampons de pixels sur l’écran, et le serveur (compositeur) est le fournisseur de services qui contrôle l’affichage de ces tampons.
Un compositeur est un gestionnaire de fenêtres qui fournit une mémoire tampon hors écran pour chaque fenêtre. La mémoire tampon de la fenêtre contient une image ou d’autres effets graphiques tels qu’une animation, et l’écrit dans la mémoire de l’écran.
Le rendu est effectué par le client via EGL, et le client envoie simplement une requête au compositeur pour indiquer la région qui a été mise à jour.
EGL (Embedded-System Graphics Library) est une interface de programmation d’applications (API) qui fournit un moyen standard pour les applications graphiques de créer et de gérer des contextes de rendu graphique.
Elle fait le lien entre ses API de rendu, comme OpenGL ES ou OpenVG, et le système de fenêtrage du système d’exploitation sous-jacent.
La communication entre le client et le composeur se fait par IPC via l’espace noyau.
Plus de détails dans ce lien : https://wayland.freedesktop.org/architecture.html
Wayland VS Xorg (X11) et pourquoi Wayland est meilleur
Tout comme Xorg, Wayland utilise aussi les technologies récentes du noyau Linux comme le DRI (Direct Rendering Infrastructure,), KMS (Kernel-based mode-setting), et GEM (Graphics Execution Manager), dans le but de fournir un serveur d’affichage minimal, léger et performant.
Mais Wayland priorise la performance et la sécurité. Il réduit la complexité de la communication entre les composants et permet aux applications d’interagir plus efficacement avec le serveur d’affichage.
Dans la majorité des cas, le serveur X n’est plus qu’un intermédiaire qui introduit une étape supplémentaire entre les applications et le compositeur et une étape supplémentaire entre le compositeur et le matériel.
Sous Wayland, les fonctions du serveur d’affichage et du gestionnaire de fenêtres sont combinées dans le compositeur Wayland correspondant.
Le protocole Wayland permet au compositeur d’envoyer les événements d’entrée directement aux clients et au client d’envoyer l’événement d’endommagement directement au compositeur.
Les clients effectuent le rendu localement et communiquent directement avec le compositeur.
Ainsi, l’application sait ce qu’elle veut rendre. Le rendu côté client réduit les étapes généralement associées au processus client/serveur traditionnel. Les applications dessinent la fenêtre dans laquelle elles vont s’exécuter et envoient ensuite leurs informations d’affichage à Wayland. Avec Wayland, le compositeur est le serveur d’affichage.
Wayland offre une base de code simplifiée, ce qui présente l’avantage supplémentaire de réduire le gonflement dû à des années de développement pour faire fonctionner Xorg au fur et à mesure des évolutions technologiques. Le passage à un rendu côté client augmente les temps de chargement et, dans la plupart des cas, offre une interface plus simple.
Ainsi, Wayland supprime ces étapes supplémentaires et simplifie le rendu pour offrir des performances plus fluides et réactives que X11.
Du point de vue de la sécurité, Wayland montre une nette amélioration de l’isolation au niveau de l’interface graphique. De par sa conception, Xorg ne permet pas cette fonctionnalité. Xorg suppose que tous les programmes ne sont pas nuisibles. Lors de l’exécution de plusieurs applications graphiques, Xorg ne les isole pas les unes des autres. L’entrée de commande a le potentiel d’enregistrer les frappes de touches, par exemple, des processus pour de nombreuses applications.
Wayland restreint les interactions entre les applications, limitant la capacité des applications malveillantes à affecter d’autres processus ou à intercepter des données sensibles.
Enfin Wayland offre une meilleure prise en charge des périphériques d’entrée, tels que les claviers, souris et écrans tactiles, en les intégrant plus étroitement dans le système graphique.
En résumé, Xorg est un intermédiaire qui crée des étapes supplémentaires entre les applications, le compositeur et le matériel. Wayland rationalise ce processus en éliminant l’étape du serveur X pour fournir un protocole plus moderne et plus cohérent que X11.
Quelles sont les limites et les problèmes de Wayland
Il y a plusieurs raisons pour lesquelles Xorg reste la version par défaut de Linux. Xorg est familier, car il est utilisé depuis plus de 30 ans. Cette longévité s’accompagne d’un bagage, car le codage et les ajouts rendent X trop lourd. Cependant, comparé à Wayland, Xorg est mieux conçu pour ajouter de nouvelles capacités ou fonctionnalités.
Les jeux vidéo et les applications graphiquement intenses conçues pour X11 ont tendance à mieux fonctionner sur Xorg. Au-delà de ces deux exemples, de nombreuses applications natives encore utilisées ont été écrites pour Xorg. Même sur les systèmes les plus récents, X et Xorg restent l’application de fenêtrage par défaut, bien que Wayland soit installé sur de nombreux systèmes.
En ce qui concerne les jeux, des problèmes de déchirure d’écran, d’artefacts ou de problème de rafraîchissement sont connus.
Ainsi, l’adoption de Wayland prend du temps car il faut aussi réécrire les applications.
Pour minimiser cela, Xwayland a été créé. Il s’agit d’un composant du système graphique Wayland qui agit comme un pont de compatibilité en permettant aux applications conçues pour X11 (l’ancien système d’affichage) de s’exécuter sur un serveur Wayland.
Il facilite la transition vers Wayland en offrant une compatibilité avec l’immense catalogue d’applications existantes pour X11.
L’utilisation de certains pilotes propriétaires comme NVIDIA peuvent aussi poser des problèmes.
Il existe plusieurs domaines dans lesquels le pilote NVIDIA ne présente pas les mêmes caractéristiques que X11 et Wayland. Cela peut être dû à des limitations du pilote lui-même, du protocole Wayland ou du compositeur Wayland spécifique utilisé. Au fil du temps, cette liste devrait s’alléger au fur et à mesure que les fonctionnalités manquantes seront implémentées à la fois dans le pilote et dans les composants en amont, mais ce qui suit reflète la situation à la date de publication de cette version du pilote. Notez que cela suppose un compositeur avec un support raisonnablement complet pour les extensions du protocole Wayland liées au graphisme.
La liste des limitations est fournie par NVIDIA dans ce lien : https://download.nvidia.com/XFree86/Linux-x86_64/515.65.01/README/wayland-issues.html
Wayland dans les distributions Linux
La prise en charge de Wayland peut varier en fonction de l’environnement de bureau et des pilotes graphiques utilisés. Certains environnements de bureau, comme KDE Plasma, prennent en charge Wayland, mais leur adoption peut être moins répandue que celle de GNOME.
Il est possible souvent proposer en option lors de l’ouverture du bureau Linux mais pas forcément par défaut.
Ainsi, il en résulte que l’adoption de Wayland varie beaucoup selon la distribution Linux.
Voici un tour d’horizon :
- Fedora : Fedora a été l’une des premières distributions à adopter Wayland par défaut, notamment avec Fedora 25 et les versions ultérieures. GNOME, l’environnement de bureau par défaut de Fedora, fonctionne sur Wayland.
- Ubuntu : Bien qu’Ubuntu utilise toujours Xorg par défaut dans ses versions stables, il offre la possibilité d’utiliser Wayland avec l’environnement de bureau GNOME. Ubuntu 17.10 utilise Wayland par défaut. Dans Ubuntu 24.04, Wayland est par défaut pour les utilisateurs des pilotes NVIDIA propriétaires
- Arch Linux : Arch Linux propose Wayland dans ses dépôts officiels et prend en charge plusieurs environnements de bureau qui fonctionnent sur Wayland, tels que GNOME, KDE Plasma, et Sway (un gestionnaire de fenêtres Wayland inspiré de i3)
- openSUSE : openSUSE propose une prise en charge de Wayland avec son environnement de bureau GNOME. Il est possible d’utiliser Wayland avec d’autres environnements de bureau également, mais GNOME est le plus largement pris en charge
- Debian : Debian propose la prise en charge de Wayland dans ses dépôts officiels. Bien qu’il ne soit pas activé par défaut dans la version stable, il est disponible en tant qu’option pour les utilisateurs qui souhaitent l’utiliser avec des environnements de bureau tels que GNOME et KDE Plasma
- Endless OS : Endless OS, une distribution Linux axée sur l’éducation et les pays en développement, utilise Wayland par défaut avec son propre environnement de bureau basé sur GNOME appelé EOS Shell
- Wayland est est configuré par défaut pour la plupart des cas d’utilisation dans RHEL 8, suivi de la dépréciation du serveur Xorg dans RHEL 9, avec l’intention de son retrait dans une future version. Dans RHEL 10, le serveur Xorg et d’autres serveurs X (à l’exception de Xwayland) sont supprimés
Les commandes Wayland
Voici un tableau récapitulatif des principales commandes utilisées sous Wayland et leur fonction :
Commande/Outil | Fonction principale | Compositeur pris en charge | Exemple d’utilisation |
wlr-randr | Gestion des écrans (résolution, position) | wlroots (Sway, Hyprland, etc.) | wlr-randr –output HDMI-A-1 –mode 1920×1080 –pos 1920,0 |
weston-randr | Gestion des écrans (résolution, orientation) | Weston | weston-randr –output HDMI-A-1 –mode 1920×1080 |
swaymsg | Configuration des écrans et fenêtres | Sway | swaymsg output HDMI-A-1 resolution 1920×1080 position 0 0 |
grim | Capture d’écran | wlroots-compatible | grim screenshot.png |
wf-recorder | Enregistrement d’écran | wlroots-compatible | wf-recorder -f screen-record.mp4 |
swaybg | Définir un fond d’écran | Sway | swaybg -o HDMI-A-1 -i background.png |
libinput | Gestion des périphériques d’entrée | Tous | libinput list-devices |
wayland-info | Informations sur le compositeur Wayland | Tous | wayland-info |
weston-info | Informations sur le compositeur Weston | Weston | weston-info |
swaymsg -t get_outputs | Informations sur les écrans connectés | Sway | swaymsg -t get_outputs |
swaymsg resize | Redimensionner une fenêtre | Sway | swaymsg resize set width 800 height 600 |
wdisplays | Gestion graphique des écrans | wlroots-compatible | Outil graphique, sans commande spécifique |
Liens
- Système d’exploitation et OS : qu’est-ce que c’est ? comment ça marche ?
- Découvrir Linux : Qu’est-ce que Linux ?
- Les distributions Linux : qu’est-ce que c’est ?
- Qu’est-ce que le serveur X sur Linux
- Qu’est-ce qu’un environnement de bureau Linux
- Configurer et comprendre xorg.conf
- Installer les pilotes NVIDIA sur Ubuntu (propriétaire)
- Savoir si le bureau Linux est sous Wayland ou Xorg (X11)