Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
wayland [Le 04/10/2017, 22:39] – [Connexion à la session impossible] correction lien Roschanwayland [Le 01/02/2026, 15:48] (Version actuelle) – réorganisation krodelabestiole
Ligne 1: Ligne 1:
 {{tag>carte_graphique système}} {{tag>carte_graphique système}}
------ 
-{{ https://wayland.freedesktop.org/wayland.png?70|}} 
  
 +{{ https://wayland.freedesktop.org/wayland.png?80|Icône de Wayland}}
 ====== Wayland ====== ====== Wayland ======
  
-**Wayland** est un **protocole** permettant à un **compositeur** de communiquer avec ses clients ; un [[wpfr>Compositeur_(logiciel)|compositeur]] étant un [[gestionnaire de fenêtres]] qui utilise un tampon en mémoire pour gérer chaque fenêtre et y appliquer des effets visuels. +**[[wpfr>Wayland]]** est un **protocole** permettant à un **compositeur** de communiquer avec ses clients. Un [[wpfr>Compositeur_(logiciel)|compositeur]] est un [[gestionnaire de fenêtres]] qui utilise un tampon en mémoire pour gérer chaque fenêtre et y appliquer des effets visuels, et les clients du compositeur sont les fenêtres à afficher.\\ 
 +**Wayland** est aussi le nom de la bibliothèque logicielle implémentant ce protocole.
  
-Wayland est aussi le nom de la librairie implémentant ce protocole.+**Wayland** remplace l'ancien serveur d'affichage **[[:xorg|X.org]]**. Il apporte des performances, des fonctionnalités, et un niveau de sécurité adapté à un système moderne. Il est donc le protocole d'affichage par défaut de la [[:ubuntu|variante classique]] ([[:GNOME]]) d'Ubuntu.
  
-Une couche de compatibilité, **XWayland**, permet de faire fonctionner les applications pour [[Xorg]] avec Wayland. Toutes les applications existantes peuvent donc normalement utiliser Wayland par ce biais, [[#impossible_de_lancer_une_application_comme_admin|à l'exception de celles qui requièrent les droits d'administration]]. Un [[#environnements_compatibles|environnement qui supporte ce protocole]] (GNOME Shell, KDE Plasma, ...) est cependant nécessaire.+Une couche de compatibilité, **XWayland**, permet de faire fonctionner les applications pour [[:xorg|X.org]] avec Wayland. Les anciennes applications peuvent donc utiliser **Wayland** par ce biais. Un [[#environnements_compatibles|environnement qui supporte ce protocole]] ([[:GNOME]][[:KDE]][[:Enlightenment]] ...) est cependant nécessaire.
  
-===== Pourquoi Wayland ? =====+==== Pourquoi Wayland ? ====
  
-Jusqu'à présent, l'affichage était géré par [[Xorg]], un logiciel proposant une implémentation libre d'un protocole (X11datant des années 80.+Jusqu'à présent, l'affichage était géré par **[[:xorg|X.org]]**, un logiciel proposant une implémentation libre du protocole **[[wpfr>X_Window_System|X11]]**, celui-ci datant des années 1980.
  
-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.+Les usages ont évidemment beaucoup changé depuis, avec entre autre la généralisation d'effets visuels avancés, et donc un rendu complexe pour les interfaces graphiques**X11** n'pas été conçu pour ce genre de rendu.
  
-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.+De plus, **X11** pose de sérieux problèmes de **sécurité**, puisque les informations sont échangées sans aucun souci de confidentialité entre les différentes fenêtreset donc les différentes applications, autorisant une application à en "espionner" une autre.
  
-Wayland lui, isole les entrées/sorties de chaque fenêtre, et limite la quantité de code exécutée en tant que //root//((Pour plus de détails, voir [[https://forum.ubuntu-fr.org/viewtopic.php?pid=21783378#p21783378|ces explications très complètes d'un développeur d'Ubuntu]] sur le forum)).+De son côté **Wayland** gère les entrées et sorties de chaque fenêtre en les isolant, et limite la quantité de code exécuté en tant que //[[:utilisateur#comptes_des_usagers_compte_superutilisateur_et_comptes_systemes|root]]//.((Pour plus de détails, voir [[https://forum.ubuntu-fr.org/viewtopic.php?pid=21783378#p21783378|ces explications très complètes d'un développeur d'Ubuntu]] sur le forum.))
  
-L'architecture de Wayland optimise le fonctionnement des compositeurs, et facilite le rendu aujourd'hui complexe de l'image des fenêtres, en sécurité et avec de **meilleures performances**.+L'architecture de **Wayland** est optimisée pour le fonctionnement des compositeurs, et facilite le rendu aujourd'hui complexe de l'image des fenêtres, en toute sécurité et avec de meilleures performances.
  
-===== Pré-requis =====+===== Utilisation ====
  
-Wayland fonctionne seulement avec les systèmes utilisant KMS ([[https://fr.wikipedia.org/wiki/Kernel-based_mode-setting|Kernel-based mode-setting]]), une fonctionnalité du noyau dépendant entre autres du pilote de carte graphique utilisé. Par exemple, avec les pilotes propriétaires nVidia, des réglages manuels peuvent être nécessaires((https://wiki.archlinux.org/index.php/NVIDIA#DRM_kernel_mode_setting)).+==== Ouvrir une session avec Wayland ====
  
-Un compositeur implémentant le protocole 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é).+**Wayland** est utilisé par défaut sur Ubuntu.
  
-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 [[http://www.phoronix.com/scan.php?page=news_item&px=XDC2016-Device-Memory-API|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).+<note tip> 
 +Pour choisir d'ouvrir une [[:session utilisateur|session]] avec **Wayland** ou **[[:xorg|X.org]]**voir le chapitre //[[:fenetre_de_connexion#Gestion de Wayland]]//. 
 +</note>
  
-===== Environnements compatibles =====+==== Connaître le protocole de gestion de fenêtrage actif ====
  
-Les [[environnements]] de bureau majeurs suivants supportent Wayland +La commande ci-dessous devrait retourner soit ''x11'' soit ''wayland'' : 
 +  echo $XDG_SESSION_TYPE
  
-^ Environnement ^ Variante ^ Versions compatibles ^ +==== Weston ====
-^ [[GNOME Shell]] | [[Ubuntu]] (variante par défaut, versions [[17.10]] et postérieures) \\ Variante [[Ubuntu GNOME]] (versions 17.04 et antérieures) | Compatible depuis GNOME Shell 3.12 environ. \\ Wayland est utilisé par défaut sur Ubuntu avec GNOME Shell depuis la version [[17.10]] | +
-^ [[Enlightenment]] | Aucune variante dédiée. \\ Seule la version E17 est disponible dans les dépôts d'Ubuntu | Compatible depuis la version E19 | +
-^ [[KDE Plasma]] | Environnement par défaut de [[Kubuntu]] | Fonctionnement encore imparfait mais possible depuis environ Ubuntu [[16.04]] |+
  
-Wayland est aussi très utilisé dans le domaine des **smartphones avec Linux** (%%Plasma Mobile, Tizen OS, Sailfish OS%%), et même des **montres connectées %%GNU/Linux%%** ([[https://asteroidos.org/|Asteroid OS]]) !+[[:Weston]] est l'implémentation de référence d'un [[:gestionnaire de fenêtres|gestionnaire de fenêtre]] avec composition graphique pour Wayland.
  
-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 marginales, ne sont pas détaillés ici.+=== Ce que nous apprend Weston ===
  
-===== Librairies graphiques =====+En matière de performances, on voit que les fenêtres peuvent être pivotées, animées, zoomées, leurs transparences modifiées, etc. bref, des effets de composition plutôt complexes. Pourtant, Weston reste très rapide, fluide et léger en mémoire. En comparaison, les temps de réactions des applications utilisant XWayland se ressentent d'ailleurs parfois.
  
-Ces informations sont fournies à titre indicatif, mais quand un système est distribué nativement avec une session labellisée "Wayland(//comme la session Wayland d'[[Ubuntu Gnome]] depuis sa version 17.04 par exemple//), il devrait théoriquement gérer tout seul ces configurations.+Avec **Wayland**, l'enregistrement de l'écran (capture photo ou vidéo) //doit// être géré par l'environnementalors qu'il était jusqu'à présent indépendant de l'environnement utilisé.
  
-=== GTK+ 3 === +Il s'agit là d'une question de sécurité : les applications n'ayant pas la possibilité de "connaître" la position et le contenu des fenêtres de leurs voisines avec Wayland, ces informations doivent être "demandées" à l'environnement (et notamment au compositeur en ce qui concerne les fenêtres).
-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]], ...+==== Détecter les applications tournant sur Xwayland ====
  
-=== Qt 5 === +La commande ''[[man>xlsclients]]'' liste les applications tournant sous Xwayland.
-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).+Une astuce consiste aussi à installer [[:tutoriel:comment_installer_un_paquet|xeyes]], lancer l'application, et survoler avec le curseur la fenêtre qu'on souhaite tester : si les yeux suivent le curseuralors l'application tourne sous Xwayland.((Merci à [[https://medium.com/@bugaevc/how-to-easily-determine-if-an-app-runs-on-xwayland-or-on-wayland-natively-8191b506ab9a|Sergey Bugaev]] pour l'astuce.))
  
-=== Clutter ===+===== Environnements compatibles =====
  
-Régler la variable d'environnement ''CLUTTER_BACKEND=wayland''.+Un **compositeur** implémentant le protocole **Wayland** ([[:Mutter]], [[:Kwin]], [[:Enlightenment]], [[:gestionnaire_de_fenetres#Sway]], [[:Weston]]...) est  nécessaire (**Wayland** seul ne fait rien : sans compositeur **[[:xorg|X.org]]** serait toujours utilisé).
  
-Clutter est entre autres utilisé pour les parties "pas en GTK+" de [[Gnome Shell]].+Les [[:environnements]] de bureau modernes supportent **Wayland** :
  
-=== SDL ===+^ Environnement ^ Variante ^ Commentaire ^ 
 +^ [[:GNOME Shell]]   | [[:Ubuntu]] | Wayland est utilisé par défaut sur Ubuntu avec GNOME Shell depuis [[:hirsute|Hirsute 21.04]]. | 
 +^ [[:Enlightenment]] | Aucune variante officielle. | Compatible depuis la version E19 | 
 +^ [[:KDE Plasma]]    | Environnement par défaut de [[:Kubuntu]] | | 
 +^ [[:gestionnaire_de_fenetres#Sway]]     | Aucune variante officielle ([[:paquet]] ''[[apt>sway]]''). | //[[wpfr>gestionnaire_de_fenêtres_par_pavage|Tiling desktop]]//, successeur de [[:gestionnaire_de_fenetres#i3]] | 
 +^ [[:gestionnaire_de_fenetres#Hyprland]] | Aucune variante officielle ([[:paquet]] ''[[apt>hyprland]]''). | //[[wpfr>gestionnaire_de_fenêtres_par_pavage|Tiling desktop]]// avec effets visuels |
  
-Un support expérimental de Wayland existe depuis SDL 2.0.2 ; Pour lancer une application SDL (principalement des jeux vidéossur Waylandréglez ''SDL_VIDEODRIVER=wayland''.+<note> 
 +**Wayland** est aussi très utilisé dans le domaine des **smartphones** avec Linux ([[https://pureos.net/|PureOS]], [[https://plasma-mobile.org/fr/|Plasma Mobile]], [[wpfr>Tizen]], [[https://sailfishos.org/|Sailfish OS]]), et même des **montres connectées %%GNU/Linux%%** ([[https://asteroidos.org/|Asteroid OS]]) ! 
 +</note>
  
-=== GLFW ===+Il existe d'autres [[:gestionnaires de fenêtres]] moins répandus (et absents des dépôts).
  
-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.+===== Bibliothèques graphiques =====
  
-=== EFL === +<note important> 
-Les librairies EFL (environnement [[Enlightenment]] et applications liées) supportent totalement Wayland. Voir [[https://wayland.freedesktop.org/efl.html|cette page]].+Ces informations sont fournies à titre indicatif : Ubuntu et les [[:distributions|systèmes]] distribués nativement avec **Wayland** gèrent automatiquement ces configurations. 
 +</note>
  
-===== Weston =====+==== GTK+ 3 ====
  
-Weston est l'implémentation de référence d'un [[:gestionnaire de fenêtres|gestionnaire de fenêtre]] avec composition graphique pour Wayland.+Régler la [[:variables_d_environnement|variable d'environnement]] ''GDK_BACKEND=wayland''.
  
-Un article lui est dédié **[[:Weston|ici]]**.+GTK+ 3 est la bibliothèque utilisée par les applications des environnements [[:GNOME]], [[:MATE]], [[:Cinnamon]], [[:Budgie]], ...
  
-==== Ce que nous apprend Weston ====+==== Qt 5 ====
  
-En terme de performanceson voit que les fenêtres peuvent être pivotées, animées, zoomées, leurs transparences modifiées, etc. bref, des effets de composition plutôt complexes. Pourtant, Weston reste très rapide, fluide et léger en mémoire. En comparaison, les temps de réactions des applications utilisant XWayland se ressentent d'ailleurs parfois.+Pour faire fonctionner une application Qt 5 avec le //plugin// Waylandrégler la [[:variables_d_environnement|variable d'environnement]] ''QT_QPA_PLATFORM=wayland-egl'' (le paquet fournissant le //plugin// doit être installé).
  
-Avec Wayland, l'enregistrement de l'écran (capture photo ou 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 pour Xorg risquent de ne plus fonctionner !+[[:Qt]] est la bibliothèque utilisée entre autres par les environnements [[:KDE Plasma]][[:LXQt]], ou encore l'interface de LiriOS (non disponible pour Ubuntu).
  
-Il s'agit là d'une question de sécurité : les applications n'ayant pas la possibilité de "connaître" la position et le contenu des fenêtres de leurs voisines avec Wayland, ces informations doivent être "demandées" à l'environnement (et notamment au compositeur en ce qui concerne les fenêtres).+==== SDL ==== 
 + 
 +Pour lancer une application SDL (principalement des jeux vidéo) sur Wayland, réglez ''SDL_VIDEODRIVER=wayland''
 + 
 +==== GLFW ==== 
 + 
 +Wayland peut être activé avec l'option CMake ''-DGLFW_USE_WAYLAND=ON'' au moment de la compilation. 
 + 
 +==== EFL ==== 
 + 
 +Les bibliothèques EFL (environnement [[:Enlightenment]] et applications liéessupportent totalement Wayland. Voir [[https://wayland.freedesktop.org/efl.html|cette page]].
  
-===== Problèmes divers =====+===== Problèmes connus =====
  
 ==== Connexion à la session impossible ==== ==== Connexion à la session impossible ====
  
-Tous les gestionnaires de sessions ne sont pas capables de lancer des sessions avec Wayland.+Tous les gestionnaires de sessions ne sont pas capables de lancer des sessions avec **Wayland**.
  
-Il faut donc s'assurer d'utiliser un [[:fenetre_de_connexion|gestionnaire de sessions]] compatible, comme [[:GDM]] ou [[:SDDM]]. Pour le moment, [[:LightDM]] ne semble pas compatible.+Il faut donc s'assurer d'utiliser un [[:fenetre_de_connexion|gestionnaire de sessions]] compatible, comme [[:GDM]] ou [[:SDDM]].
  
-==== Impossible de lancer une application comme admin ====+==== Impossible de lancer une application comme administrateur ====
  
-Wayland n'autorise pas de manipulations aussi dangereuses : lancer des applications en tant que //root// représente une surface d'attaque importante pour un éventuel hacker+**Wayland** n'autorise pas de manipulations aussi dangereuses : lancer des applications en tant que //[[:utilisateur#comptes_des_usagers_compte_superutilisateur_et_comptes_systemes|root]]// représente une surface d'attaque importante. 
-Lélévation des privilèges devra désormais être gérée par chaque application en fonction de ses besoins (voir les applications en exemple dans la note suivante).+L'[[:elevation_privileges|élévation des privilèges]] devra désormais être gérée par chaque application en fonction de ses besoins (voir les applications en exemple dans la note suivante) via [[:policykit|polkit]].
  
-<note important>La manipulation qui va suivre réduit à néant les efforts de Wayland pour sécuriser la session. Pensez donc plutôt à avoir des usages "sainsdes droits d'administration : +<note important> 
-  * Utiliser [[:gnome-packagekit|GNOME Paquets]] au lieu de [[:Synaptic]] +Assurez-vous d'avoir une pratique "sainede l'informatique en suivant les documentations //[[:Permissions administrateur]]// et //[[:elevation_privileges|Élévation des privilèges]]// !
-  * Utiliser [[:gnome-disk-utility|GNOME Disques]] au lieu de [[:GParted]] +
-  * Utiliser [[:nano]] au lieu de [[:gedit]] +
-  * Utiliser des [[:commande_shell#action_sur_les_fichiers_et_repertoires|commandes de manipulation de fichiers]] plutôt que de faire "sudo nautilus"+
-Alternativement, il est toujours possible d'utiliser la session X.org pour certains usages n'ayant pas d'alternative.+
 </note> </note>
  
-Une possibilité pour contourner ce mécanisme de sécurité est d'utiliser xhost pour autoriser "root" à accéder à la session de l'utilisateurEn tant qu'utilisateur normal ("//localuser//" étant votre nom) : +==== Applications non-compatibles ==== 
-<code>xhost si:localuser:root</code> + 
-Après la manipulation, il faut retirer l'accès (sinon vous laisseriez un "trou" dans la sécurité du système) : +Les applications correctement maintenues sont aujourd'hui toutes compatibles avec Wayland, à moins d'être directement liée à [[xorg|X.org]]. On peut reconnaître ces dernières grâce à leur nom qui commence souvent par un //X// majuscule (''[[apt-cli|apt]] list ~n^x -i'' pour lister les paquets installés dont le nom commence par ''x'' -- tous ne sont pas concernés). 
-<code>xhost -si:localuser:root</code>+ 
 +Dans ces applications non compatibles, on trouve en particulier : 
 +  * certaines applications de [[:capture d'écran]] 
 +  * certaines applications de partage d'écran ou de [[:bureau à distance]] (comme [[:X2Go]] ou le [[:ssh#affichage_graphique_deporte_tunneling_serveurx_par_ssh_-_acceder_aux_applications_graphiques|déport de X]] avec [[:SSH]]).
  
 ===== Voir aussi ===== ===== Voir aussi =====
  
   * [[https://wayland.freedesktop.org/|Site officiel]]   * [[https://wayland.freedesktop.org/|Site officiel]]
-  * (en) [[https://wiki.archlinux.org/index.php/wayland|Source principale]]+  * [[:fenetre_de_connexion#Gestion de Wayland]] 
 +  * [[:Weston]] 
 +  * [[:Mir]] 
 +  * [[:Xorg|X.org]] 
 +  * **(//en//)** [[https://wiki.archlinux.org/index.php/wayland|Source principale]]
   * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=21783378#p21783378|Explications d'un développeur d'Ubuntu sur le forum]].   * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=21783378#p21783378|Explications d'un développeur d'Ubuntu sur le forum]].
  
 ----- -----
- +//[[:Contributeurs]] : [[:utilisateurs:roschan]], [[:utilisateurs:amiralgaby]], [[:utilisateurs:krodelabestiole]].//
-//Contributeurs : [[utilisateurs/roschan]], ...// +