Important :

Le présent wiki a été migré vers wiki.archlinux.org.

Ce Wiki a été archivé. Toute contribution doit donc désormais se faire là-bas. Cette page de Wiki possède donc potentiellement des informations qui ne sont plus à jour !

Accueil wiki FR sur .org

Wayland

De ArchwikiFR
Révision datée du 4 février 2021 à 08:20 par Nophke (discussion | contributions) (Dépannage : ajout paragraphe pour problème d'Input grabbing)

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 ou KDE).

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

Buffer API supporte les pilotes de GPU supporte les compositeurs
GBM tous sauf NVIDIA tous
EGLStreams NVIDIA GNOME, KDE, Weston

Installation

Vous pouvez installer le paquet wayland avec Pacman.

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

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 Wayland GNOME display manager.
greetd remplace login «login daemon» minimal et flexible
LightDM X11 supporte X11, Wayland, et Mir !
ly Console gestionnaire de connexions, en mode texte, écrit en C
SDDM X11 QML-based display manager.
tbsm Console «lanceur» de session écrit en bash.

Utilisation

Comme Wayland est seulement une bibliothèque, il est parfaitement inutile seul. Pour l'utiliser, vous avez besoin d'un compositeur de fenêtres (comme Weston), d'applications de démonstration Weston, QT5 (ou Qt4 avec QPA activé) avec le plugin Wayland, et/ou GTK+ avec le support de Wayland, etc..

Weston

Weston est une mise en œuvre du compositeur Wayland utilisé comme référence et pour les cas d'usage avec un certain nombre d'applications de démonstration (terminal, afficheur d'images, liseuse pdf, etc.).

Note : Comprenez qu'en l'état vous ne pourrez pas lancer vos applications graphiques usuelles qui sont des clients X, mais seulement les applications de démonstration de weston.

Installation

Vous pouvez installer le paquet wayland avec Pacman.

pacman -Syu wayland
Note : La version en cours de développement, weston-git, est disponible sur AUR. Si vous faites le choix de la version «git», installez également wayland-git

Lancement

Maintenant que tous les composants sont installés vous devriez pouvoir tester. Passer sur un tty avec Ctrl+Alt+F1 à F6 et lancez:

weston-launch

Désormais vous pouvez tester les applications de démonstration:

  • lancer un émulateur de terminal:
weston-terminal
  • afficher des images:
weston-image image1.jpg image2.jpg2
  • visionner des pdf:
weston-pdf
  • déplacer des fleurs autour de l'écran:
weston-flower
  • tester le taux d'images par seconde / frame protocole (lance glxgears):
weston-gears
  • avoir de la fumée suivant votre curseur
weston-smoke
  • etc.
Raccourcis clavier (super = touche windows)
Combinaison Action
Ctrl + Alt + Backspace Quitter weston
Super + Scroll / PageUpDown Zoom dans le bureau
Super + Tab Basculer entre les fenêtres

Configuration

Cet environnement de démonstration peut être configuré au moyen d'un fichier weston.ini situé dans $XDG_CONFIG_HOME/weston.ini, $HOME/.config/weston.ini ou ./weston.ini.

Le fichier suivant est tiré du dépôt git de wayland:

Fichier: ~/.config/weston.ini
[core]
#modules=desktop-shell.so,xwayland.so

[shell]
background-image=/usr/share/backgrounds/gnome/Aqua.jpg
background-color=0xff002244
panel-color=0x90ff0000
locking=true
animation=zoom
#binding-modifier=ctrl
#num-workspaces=6

#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg
#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg
#animation=fade

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/gnome-terminal

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png
path=/usr/bin/weston-terminal

[launcher]
icon=/usr/share/icons/hicolor/24x24/apps/google-chrome.png
path=/usr/bin/google-chrome

[launcher]
icon=/usr/share/icons/gnome/24x24/apps/arts.png
path=./clients/flower

[screensaver]
# Uncomment path to disable screensaver
path=/usr/libexec/weston-screensaver
duration=600

[input-method]
path=/usr/libexec/weston-keyboard

#[output]
#name=LVDS1
#mode=1680x1050
#transform=90

#[output]
#name=VGA1
#modeline=173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
#transform=flipped

#[output]
#name=X1
#mode=1024x768
#transform=flipped-270

Utiliser man weston.ini pour voir le détail des sections et configurations possibles, rapidement:

  • core: modules à démarrer
  • shell: personnalisation du bureau
  • launcher: ajouter des lanceurs au panneau
  • screensaver: configuration de l'économiseur d'écran
  • output: configuration de l'écran
  • input-method: périphérique d'entrée (clavier)
  • keyboard: disposition du clavier et configuration
  • terminal: personnalisation de la console
Astuce : On peut ainsi rajouter une section pour récupérer une disposition de clavier français (pour le cas où vous n'auriez pas remarqué que, bien entendu, weston se fiche de votre configuration de Xorg et donc que vous êtes en qwerty ^^):
[keyboard]
keymap_layout=fr

XWayland

Pour pouvoir utiliser les applications qui ne supporteraient 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 instruction 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 supporte pas l’accélération matériel depuis XWayland. Voir cette pull request.

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 du wiki officiel.

Liens