Wayland (Français)

From ArchWiki

Tango-preferences-desktop-locale.pngCet article ou section a besoin d'être traduit(e).Tango-preferences-desktop-locale.png

Notes: Cet article ne respecte pas la structure de sa version anglophone, merci de le réécrire en conséquence. Vous pouvez aussi ajouter à la version anglophone les informations à-jour et dignes d’intérêt qui ne seraient portées que par la version francophone. Voir ArchWiki:Translation Team (Français) (Discuss in Talk:Wayland (Français)#)

Wayland est un nouveau protocole de fenêtrage pour Linux (très grossièrement, il regroupe système X et compositeur et se veut donc plus simple et efficace). Pour plus d'informations sur Wayland, consultez le site du projet.

Exigences

La grande majorité des compositeurs fonctionnent seulement sur les systèmes utilisant KMS.

Wayland ne fournit pas lui même d’environnement graphique, pour cela vous aurez besoin d'un compositeur ou d'un environnement graphique (comme GNOME (Français) ou KDE (Français)).

Pour qu'un driver de carte graphique fonctionne avec un compositeur donné, tous deux doivent prendre en charge une même API. Les deux principales API étant: GBM et EGLStreams.

Buffer API prends en charge les pilotes de GPU prends en charge les compositeurs
GBM tous sauf NVIDIA (Français) tous
EGLStreams NVIDIA (Français) GNOME (Français), KDE (Français), Weston (Français)

Installation

pacman -Syu wayland
Note: La version en cours de développement est disponible depuis AUR: wayland-gitAUR.

Gestionnaire de connexions

Les gestionnaires de connexions suivants sont tous capable de démarrer un compositeur Wayland. La colonne «type» indique si le gestionnaire de connexion, fonctionne lui-même sous Wayand.

Name Type Description
GDM (Français) Wayland GNOME (Français) display manager.
greetdAUR remplace login «login daemon» minimal et flexible
LightDM (Français) X11 prends en charge X11, Wayland, et Mir !
lyAUR Console gestionnaire de connexions, en mode texte, écrit en C
SDDM (Français) X11 QML-based display manager.
tbsmAUR Console «lanceur» de session écrit en bash.

Utilisation

Les applications graphiques font généralement usage de bibliothèques de ressources. Certaines dépendent directement de Xorg (Français), (notamment par l'intermédiaire de la bibliothèque xlib[broken link: package not found]). D'autres prennent en charge nativement Wayland, et, d'autres enfin ont besoin d'ajustements pour utiliser Wayland.

Note: Si le moteur de Wayland est aujourd'hui stable, la prise en charge des différentes librairies graphiques reste en cours de développement actif.

Gtk

Les paquets gtk3, gtk4 utilisent par défaut l'infrastructure Wayland. Il est aussi possible de passer par Xwayland en exportant: GDK_BACKEND=x11

Qt

Pour activer la prise en charge de Wayland, sur Qt 5 et Qt 6 installez respectivement qt5-wayland et qt6-wayland.

Pour utiliser une application Qt avec le plugin Wayland, utilisez -platform wayland ou la variable d'environnement QT_QPA_PLATFORM=wayland. Pour forcer l'usage de Xorg lors d'une session Wayland, utilisez QT_QPA_PLATFORM=xcb avant de démarrer cette application. Ce pourrait être utile avec certaines applications propriétaires telles zoomAUR.

Sur certains compositeurs, notamment sway, certaines fonctionnalités pourraient manquer à quelques applications. Par exemple, keepassxc, ne peut être minimisé vers la barre des tâches. Ceci peut être résolu en installant qt5ct, et en exportant la variable QT_QPA_PLATFORMTHEME=qt5ct avant de démarrer ladite application.

Clutter

Le toolkit clutter possède une infrastructure qui lui permet de fonctionner comme un client Wayland. Le paquet clutter vient avec cette fonctionnalité. Il suffit d’exporter CLUTTER_BACKEND=wayland.

SDL2

Pour les applications SDL2 sur Wayland, utilisez SDL_VIDEODRIVER=wayland

Note: De nombreux jeux propriétaires sont fournis avec de vielles versions de SDL et ne prennent pas en charge Wayland. Si vous exportez SDL_VIDEODRIVER=wayland, ces applications pourraient ne pas fonctionner du tout. Pour forcer le rendu d'une application au travers de Xwayland, utilisez SDL_VIDEODRIVER=x11.

GLFW

Pour les programmes écrits avec GLFW, installez simplement glfw-wayland en remplacement du paquet glfw-x11.

GLEW

le paquet glew-waylandAUR ne fonctionne mal pour de nombreuses applications basées sur GLEW. La meilleure option reste actuellement d'utiliser glew conjointement à Xwayland. ( cf. bug_FS#62713 )

XWayland

Pour pouvoir utiliser les applications qui ne prendraient en charge que le serveur X (xterm?) par dessus Wayland, vous pouvez installer xorg-xwayland.

XWayland fournie une compatibilité ascendante aux applications qui le nécessitent, cependant, il doit être démarré depuis un compositeur. Aussi, veillez à vérifier la compatibilité de ce dernier avec Xwayland, ainsi que les instructions spécifiques à sa mise en place, en fonction du compositeur.

Note:
  • Concernant la sécurité: XWayland est un serveur X , et ne présente pas les mêmes gages de sécurité que Wayland!
  • Pour l'instant le pilote propriétaire Nvidia ne prends pas en charge l’accélération matériel depuis XWayland. Voir cette pull request.

Autres bibliothèques

Les choses évoluent vites, voyez Wayland et [1] pour plus d'infos.

Différences avec Xorg

X fonctionne sur le principe d'un serveur, c'est à dire, qu'il est supposé faire tout le boulot pour ses clients... Les clients de X, ce sont les programmes dotés d'interfaces graphiques. Les clients de X lui demandent d'afficher une image à cet endroit de l'écran, un texte ici, un carré bleu là bas.... X interprète le tout, dessine une image, et l'envoie là ou il doit (généralement c'est l'écran, mais X peut aussi fonctionner au travers d'un réseau). Le problème est qu'il est impossible lors de l'écriture d'un programme de savoir à l'avance dans quel état sera l'écran. Et deux programmes peuvent, par exemple, demander à afficher quelque chose au même endroit de l'écran!

Pour gérer genre de cas, il faut implémenter dans chacun de nos programmes une routine qui sache communiquer avec X pour lui dire quoi faire (déplacer la fenêtre, la passer en arrière-plan...). Cependant, les développeurs n'ont pas besoin d'écrire des programmes qui se préoccupent de ne pas se déranger les uns les autres, ou de réinventer la roue.

Un gestionnaire de fenêtres (qui n'est qu'un client X parmi d'autres) vient simplifier la donne en réclamant pour lui seul la totalité de l'écran. Dès lors quand un évènement se produit (que ce soit un clic, une pression du clavier, ou autre), cet évènement lui est transmis. En fonction de la position de la souris, de l'application en avant-plan, et des autres paramètres qui le concernent, le gestionnaire de fenêtre demande alors à X de retransmettre l’événement à l'application concernée. Celle-ci interprète l'évènement, et demande l'aide de X pour calculer sa nouvelle apparence. Sitôt fait, X prévient le gestionnaire de fenêtres qu'une application a changé d'apparence. Alors seulement le gestionnaire de fenêtres calcule la nouvelle apparence de l'écran, et demande à X de l'afficher.

Note: Le composant du gestionnaire de fenêtre en charge de ceci est nommé le compositeur. Certains environnements graphiques peuvent partager le même compositeur.

On devine ainsi qu'il serait plus simple que le même programme soit en charge de la composition de l'écran et de la réception des évènements matériels. C'est la différence architecturale la plus fondamentale entre X et Wayland. Wayland n'est qu'un ensemble de bibliothèques qui simplifient l'écriture d'un compositeur en mesure de communiquer lui même avec le matériel.

Dépannage

«Cannot open display: :0» avec les applications basées sur Electron

Vérifiez ne pas avoir défini la variable GDK_BACKEND=wayland au niveau global (variable d'environnement). Une variable définie de cette façon cassera les application basées sur Electron.

Jeux, Bureau à distance, et Machine virtuelle

Contrairement à Xorg, Wayland n’autorise pas une application à préempter les ressources d'un périphérique (la souris, le clavier). Sous Wayland, il est de la responsabilité du compositeur de confiner la souris à une seule application, et de retransmettre les évènements (comme les raccourcis clavier) au programme qui possède le focus.

Ce comportement impacte le fonctionnement de certaines applications actuelles. Une solution simple consiste à passer par des applications Xorg à travers XWayland. Dans le cas ou ceci n'est pas possible. Vous pouvez vous référer à cet article.

Liens