Ceci est une ancienne révision du document !



Wayland

Wayland est un protocole permettant à un compositeur de communiquer avec ses clients ; un compositeur étant un gestionnaire de fenêtres utilisant un tampon en mémoire pour gérer chaque fenêtre et y appliquer des effets visuels.

Wayland est aussi le nom de la librairie implémentant ce protocole.

Les environnements GNU/Linux majeurs, tels que Gnome et KDE, supportent ou prévoient de supporter Wayland. Un compositeur nommé Weston a été développé en même temps que Wayland pour servir de référence en terme d'implémentation du protocole.

Une couche de compatibilité, XWayland, permet de faire fonctionner la plupart des vieilles applications pour Xorg avec Wayland.

Jusqu'à présent, l'affichage était géré par Xorg, un logiciel proposant une implémentation libre d'un protocole (X11) datant des années 80.

Les usages ont beaucoup changé depuis, avec la généralisation des compositeurs graphiques avec des effets visuels avancés pour afficher les fenêtres, et donc un rendu complexe. Cela n'était pas du tout optimal, le protocole X11 n'ayant évidemment pas été conçu pour ça.

De plus, X11 pose un problème de sécurité, puisque les informations sont échangées (entre les fenêtres/applications) sans aucun souci de confidentialité, autorisant des applications à en "espionner" d'autres.

Wayland lui, isole les entrées/sorties de chaque fenêtre, et limite la quantité de code exécutée en tant que root.

L'architecture de Wayland optimise le fonctionnement des compositeurs, et facilite le rendu aujourd'hui complexe de l'image des fenêtres.

Wayland fonctionne seulement avec les systèmes utilisant KMS (Kernel-based mode-setting).

Un compositeur implémentant Wayland (Mutter, Kwin, Enlightenment, Weston…) est aussi nécessaire (sinon Wayland tout seul ne fait rien, et c'est toujours un serveur X qui serait utilisé).

Les pilotes de cartes graphiques implémentent pour la plupart une API (interface de programmation) nommée GBM (Generic Buffer Management), à l'exception des pilotes propriétaires nVidia qui implémentent dans leur coin EGLStreams, EGLStreams n'étant pas supportée par tous les compositeurs existants (Sway et Mutter semblent être les seuls au moment de la rédaction de cet article).

Les environnements majeurs suivants supportent Wayland :

Gnome Shell Environnement par défaut d'Ubuntu Gnome
sway gestionnaire de fenêtres en mosaïque (tiling) pour Wayland, héritier de i3
Enlightenment Seule la version E17 est disponible dans les dépôts officiels
KDE Plasma Environnement par défaut d'Kubuntu
Liri Shell Bureau du projet Liri OS (non disponible sur Ubuntu)

D'autres gestionnaires de fenêtres moins répandus (et donc aussi absents des dépôts), ainsi que des environnements spécifiques à certaines utilisations, ne sont pas détaillés ici.

Ces informations sont fournies à titre indicatif, mais un système distribué nativement avec une session labellisée "Wayland" (comme la session Wayland d'Ubuntu Gnome depuis sa version 17.04 par exemple) devrait théoriquement gérer tout seul ces configurations.

GTK+ 3

Régler la variable d'environnement GDK_BACKEND=wayland.

GTK+ 3 est la librairie utilisée par les applications des environnements GNOME, Mate, Xfce, 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 devant être installé).

Qt est la librairie utilisée entre autres par les environnements KDE Plasma, LXQt, ou encore l'interface de LiriOS (non disponible pour Ubuntu).

Clutter

Régler la variable d'environnement CLUTTER_BACKEND=wayland.

Clutter est entre autres utilisé pour les parties "pas en GTK+" de Gnome Shell.

SDL

Un support expérimental de Wayland existe depuis SDL 2.0.2 ; Pour lancer une application SDL (principalement des jeux vidéos) sur Wayland, réglez SDL_VIDEODRIVER=wayland.

GLFW

Un support expérimental de Wayland existe depuis GLFW 3.1 et peut être activé avec l'option CMake -DGLFW_USE_WAYLAND=ON au moment de la compilation.

EFL

Les librairies EFL (environnement Enlightenment et applications liées) supportent totalement Wayland. Voir cette page.

Weston est l'implémentation de référence du protocole Wayland.

Weston, le compositeur Wayland de référence (non configuré)

Son existence se justifie par la nécessité de développer Wayland sans dépendre des péripéties du développement des librairies et des environnements, par le besoin de pouvoir tester rigoureusement Wayland sans subir de bugs indépendants de Wayland, et par l'envie de montrer visuellement ce dont Wayland est capable en terme de performances.

Bien que ce soit parfaitement contraire au bon sens et aux raisons de sa conception, Weston peut être utilisé comme gestionnaire de fenêtres de manière autonome (par exemple, comme environnement graphique de secours pouvant être lancé sur tty2 au cas où votre environnement principal crashe ;-) )

Installation

Installez le paquet weston. Wayland sera normalement installé comme dépendance si il ne l'est pas déjà.

Utilisation

Lancez la commande weston dans une console.

Vous pouvez aussi lancer la commande weston depuis un émulateur de terminal dans une session graphique existante, cela lancera Weston de manière fenêtrée dans votre environnement déjà en cours !

L'interface par défaut est assez spartiate : un fond d'écran particulièrement laid, et seuls un lanceur et une horloge sont proposés dans une barre supérieure.

Le lanceur correspond à weston-terminal, un émulateur de terminal simple, fonctionnant uniquement sous Wayland et offrant ainsi une démonstration de gestion des fenêtres.

En l'absence de barre des tâches, une bonne connaissance des raccourcis claviers vous sera nécessaire :

Raccourci Action
Ctrl+Alt+Retour Quitter Weston
Super+molette (dé)zoomer
Super+Tab Changer de fenêtre
Super+Clic gauche Déplacer la fenêtre
Super+Clic du milieu Faire pivoter la fenêtre
Super+Clic droit Redimensionner la fenêtre
Super+Alt+molette Changer l'opacité d'une fenêtre
Super+K Tuer la fenêtre active
Super+Haut/Bas Passer à l'espace de travail supérieur/inférieur
Super+Maj+Haut/Bas Passer à l'espace de travail supérieur/inférieur
en emmenant la fenêtre active
Super+Fx Passer à l'espace de travail n°x
Super+S Prendre une capture d'écran (photo)
Super+R Prendre une capture d'écran (vidéo)
La capture d'écran photo s'enregistre toujours à ~/wayland-screenshot.png, si vous souhaitez en prendre plusieurs d'affilée il faut les renommer ou les déplacer au fur et à mesure.

Pour les captures vidéo, voir les détails plus bas.

Weston après une légère configuration

Configuration

La configuration se fait en modifiant le fichier ~/.config/weston.ini.

Les détails de tout ce qui y est configurable sont disponibles avec la commande man weston.ini (5).

Voici un exemple de configuration (ci-contre, le résultat ; ci-dessous, le fichier ~/.config/weston.ini ; le thème d'icônes utilisé est Faenza) :

[core]
shell=desktop-shell.so
modules=xwayland.so
idle-time=300

[keyboard]
keymap_layout=fr
numlock-on=true

[output]
mode=1366x768

[shell]
panel-location=top
focus-animation=dim-layer
animation=zoom
close-animation=none
background-image=/home/roschan/Images/wallpapers/nge_1.jpg
background-type=scale-crop
background-color=0xff00aa99
panel-color=0x77000000
locking=true
num-workspaces=6
cursor-size=20

[launcher]
icon=/usr/share/icons/Faenza/places/24/distributor-logo-debian.png
path=/usr/bin/nautilus /usr/share/applications

[launcher]
icon=/usr/share/icons/Faenza/apps/24/xterm.png
path=/usr/bin/terminix

[launcher]
icon=/usr/share/icons/Faenza/apps/24/web-browser.png
path=/usr/bin/epiphany

[launcher]
icon=/usr/share/icons/Faenza/apps/24/quadrapassel.png
path=/usr/games/quadrapassel

[launcher]
icon=/usr/share/icons/Faenza/apps/24/libreoffice3-writer.png
path=/usr/bin/libreoffice --writer

[launcher]
icon=/usr/share/icons/Faenza/apps/24/text-editor.png
path=/usr/bin/gedit

[launcher]
icon=/usr/share/icons/Faenza/apps/24/google-chrome.png
path=/opt/google/chrome/google-chrome

[launcher]
icon=/usr/share/icons/Faenza/status/24/dropboxstatus-blank.png
path=

[launcher]
icon=/usr/share/icons/Faenza/places/24/user-home.png
path=/usr/bin/nautilus

[launcher]
icon=/usr/share/icons/Faenza/places/24/folder-download.png
path=/usr/bin/nautilus Téléchargements

[launcher]
icon=/usr/share/icons/Faenza/places/24/folder-pictures.png
path=/usr/bin/nautilus Images

[launcher]
icon=/usr/share/icons/Faenza/places/24/folder-music.png
path=/usr/bin/nautilus Musique

[launcher]
icon=/usr/share/icons/Faenza/places/24/user-desktop.png
path=/usr/bin/nautilus Bureau

[launcher]
icon=/usr/share/icons/Faenza/devices/24/drive-harddisk-system.png
path=/usr/bin/nautilus other-locations:///

[launcher]
icon=/usr/share/icons/Faenza/status/24/dropboxstatus-blank.png
path=

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

[launcher]
icon=/usr/share/icons/Faenza/apps/24/gnome-monitor.png
path=/usr/bin/gnome-system-monitor

[launcher]
icon=/usr/share/icons/Faenza/apps/24/redhat-server_settings.png
path=/usr/bin/gedit .config/weston.ini

[launcher]
icon=/usr/share/icons/Faenza/actions/24/exit.png
path=/usr/bin/killall weston

On peut remarquer plusieurs choses :

  • shell=desktop-shell.so précise le shell à utiliser en tant que plugin de Weston ; il existe d'autres possibilités que "desktop-shell", par exemple un shell spécialisé dans les systèmes embarqués pour les véhicules (weston-ivi-shell). Des initiatives comme Maynard (un bureau pour Raspberry Pi) existent également.
  • modules=xwayland.so permet d'utiliser des applications conçues pour Xorg ;
  • keymap_layout=fr permet d'utiliser un clavier AZERTY ;
  • mode=1366x768 dépend bien sûr de votre écran ;
  • Il est brutal et dangereux de faire un lanceur killall weston, il est beaucoup plus sûr de faire Ctrl+Alt+Retour.

De manière plus triviale :

  • Les lanceurs doivent être renseignés un par un, dans l'ordre.
  • Les lanceurs doivent avoir le chemin d'une icône valide et le chemin du programme à exécuter :
    • Il ne s'agit pas de commandes bash, mais bien de chemins complets vers des programmes.
    • Des arguments peuvent ensuite être donnés à ces programmes.
    • À vous d'explorer votre thème d'icône pour y trouver ceux qu'il vous faut et les ajouter manuellement.
  • Pour avoir un "espace" dans la barre, j'ai rusé stupidement en précisant le chemin d'une image entièrement transparente (/usr/share/icons/Faenza/status/24/dropboxstatus-blank.png).
  • Les fichiers de configuration ne peuvent pas être copiés-collés tels quels, puisque les informations qui y sont précisées sont spécifiques au matériel, aux logiciels installés, à l'utilisateur, à ses fichiers, …
Pour des explications exhaustives, voir la commande man weston.ini (5).

Capture d'écran vidéo

La capture d'écran vidéo intégrée (démarrée et stoppée par Super+r) produit un fichier capture.wcap dans le dossier d'où a été lancé Weston (généralement, ~/).

Le format WCAP est un format vidéo sans perte spécifique à Weston. Pour pouvoir être lu, le fichier WCAP doit être converti :

wcap-decode capture.wcap --yuv4mpeg2 > capture.y4m
ffmpeg -i capture.y4m -target ntsc-dvd output.mpg
Avec Wayland, l'enregistrement vidéo doit être géré par l'environnement, alors qu'il était jusqu'à présent indépendant de l'environnement utilisé. Vos anciens logiciels de capture d'écran risquent de ne pas fonctionner !

Impossible de lancer une application comme admin

Wayland n'autorise pas de manipulations aussi dangereuses : cette éventualité doit désormais être gérée individuellement par chaque environnement.

Une possibilité pour contourner ce problème (si l'environnement ne prévoit rien) est d'utiliser xhost pour autoriser "root" à accéder à la session X de l'utilisateur. En tant qu'utilisateur normal ("localuser" étant votre nom) :

xhost si:localuser:root

Après la manipulation, retirez l'accès :

xhost -si:localuser:root

Contributeurs : roschan

  • wayland.1495578623.txt.gz
  • Dernière modification: Le 24/05/2017, 00:30
  • par Roschan