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édentes Révision précédente
Prochaine révision
Révision précédente
wayland [Le 25/08/2017, 21:54]
L'Africain [Wayland]
wayland [Le 07/03/2024, 23:27] (Version actuelle)
90.3.203.247 [Qt 5]
Ligne 4: Ligne 4:
  
 ====== 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]] 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.+**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 ; les clients du compositeur sont les fenêtres à afficher.
  
-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.+Wayland ​est aussi le nom de la bibliothèque logicielle implémentant ce protocole.
  
-Une **couche de compatibilité,​ XWayland**, permet de faire fonctionner ​la plupart des applications pour [[Xorg]] avec Wayland.+Une couche de compatibilité, ​**XWayland**, permet de faire fonctionner ​les applications pour [[Xorg]] avec Wayland. Toutes les applications existantes peuvent donc 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, Enlightenment ...) est cependant nécessaire. 
 + 
 +Après l’avoir été une première fois en [[:​artful|17.10]],​ Wayland est redevenu le protocole d’affichage par défaut depuis la version [[:​hirsute|21.04]] de la variante classique d’Ubuntu. Les autres variantes utilisent encore [[:Xorg]].
  
 ===== Pourquoi Wayland ? ===== ===== Pourquoi 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.+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. 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.+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. C'est tout particulièrement dramatique dans le cas où un utilisateur s'​amuserait à lancer des applications graphiques en tant qu'​administrateur : ça constitue une faille potentielle de sécurité majeure.
  
 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)). 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)).
  
-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 ===== ===== Pré-requis =====
Ligne 30: Ligne 31:
 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é). 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é).
  
-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).+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 [[https://​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).
  
-===== Environnements ​=====+===== Quel est le protocole de gestion de fenêtrage actif ? ===== 
 +La commande ci-dessous devrait retourner soit **x11** soit **wayland** :​ 
 +  echo "​$XDG_SESSION_TYPE"​
  
-Les [[environnements]] ​de bureau majeurs suivants supportent ​Wayland ​+//​voir ​[[fenetre_de_connexion#​gestion_de_wayland| Fenêtre de connexion - Gestion ​de Wayland]]//
  
-^ [[GNOME Shell]] | Environnement ​par défaut ​d'[[Ubuntu GNOME]] | +===== Environnements compatibles ===== 
-^ [[Enlightenment]] | Seule la version E17 est disponible dans les dépôts ​officiels ​+ 
-^ [[KDE Plasma]] | Environnement par défaut ​d'[[Kubuntu]] | +Les [[environnements]] de bureau majeurs suivants supportent Wayland : 
-^ Liri Shell | Bureau du projet Liri OS (non disponible sur Ubuntu) | + 
-^ sway | [[gestionnaire de fenêtres]] en mosaïque (//​tiling//​) pour Wayland, héritier de i3 |+^ Environnement ^ Variante ^ Versions compatibles ^ 
 +^ [[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 en [[17.10]] et depuis la [[21.04]]. ​
 +^ [[Enlightenment]] | Aucune variante dédiée. \\ Seule la version E17 est disponible dans les dépôts ​d'​Ubuntu antérieurs à [[:​Cosmic]]. | 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]]) ! 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]]) !
  
 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. 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.
-===== Librairies graphiques ===== 
  
-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.+===== Bibliothèques graphiques ===== 
 + 
 +Ces informations sont fournies à titre indicatif, mais un système distribué nativement avec une session "​Wayland"​ ((comme la session ​par défaut ​d'Ubuntu ​[[:17.10]] par exemple)) devrait théoriquement gérer tout seul ces configurations.
  
-=== GTK+ 3 ===+==== GTK+ 3 ====
 Régler la variable d'​environnement ''​GDK_BACKEND=wayland''​. 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]], ...+GTK+ 3 est la bibliothèque ​utilisée par les applications des environnements [[GNOME]], [[MATE]], [[Cinnamon]],​ [[Budgie]], ...
  
-=== Qt 5 ===+==== 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é). 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).+[[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).
  
-=== Clutter ===+exemple pour faire fonctionner texstudio sous ubuntu 22.04 LTS passer la commande export QT_QPA_PLATFORM=wayland . Ensuite lancer texstudio via un terminal. 
 + 
 +==== Clutter ​====
  
 Régler la variable d'​environnement ''​CLUTTER_BACKEND=wayland''​. Régler la variable d'​environnement ''​CLUTTER_BACKEND=wayland''​.
  
-Clutter est entre autres utilisé pour les parties "pas en GTK+" de [[Gnome Shell]].+Clutter est entre autres utilisé pour les parties "pas en GTK+" de [[GNOME Shell]].
  
-=== SDL ===+==== 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''​.+Un support expérimental de Wayland existe depuis SDL 2.0.2 ; Pour lancer une application SDL (principalement des jeux vidéo) sur Wayland, réglez ''​SDL_VIDEODRIVER=wayland''​.
  
-=== GLFW ===+==== 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. 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 === +==== EFL ==== 
- +Les bibliothèques ​EFL (environnement [[Enlightenment]] et applications liées) supportent totalement Wayland. Voir [[https://​wayland.freedesktop.org/​efl.html|cette page]].
-Les librairies ​EFL (environnement [[Enlightenment]] et applications liées) supportent totalement Wayland. Voir [[https://​wayland.freedesktop.org/​efl.html|cette page]].+
  
 ===== Weston ===== ===== Weston =====
Ligne 85: Ligne 93:
 ==== Ce que nous apprend Weston ==== ==== Ce que nous apprend Weston ====
  
-En terme 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.+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.
  
 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 ! 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 !
  
 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). 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).
 +
 ===== Problèmes divers ===== ===== Problèmes divers =====
 +
 +==== Connexion à la session impossible ====
 +
 +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]].
  
 ==== Impossible de lancer une application comme admin ==== ==== Impossible de lancer une application comme admin ====
  
-<note important>​Cette manipulation réduit à néant les efforts de Wayland pour sécuriser ​la session. Pensez ​plutôt ​à avoir des usages "​sains"​ des droits d'​administration :+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 cracker. 
 +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) via [[:polkit]]. 
 + 
 +Pensez ​prioritairement ​à avoir des usages "​sains"​ des droits d'​administration ​(applications adaptées à la gestion moderne des droits, ou ligne de commande) ​:
   * Utiliser [[:​gnome-packagekit|GNOME Paquets]] au lieu de [[:​Synaptic]]   * Utiliser [[:​gnome-packagekit|GNOME Paquets]] au lieu de [[:​Synaptic]]
   * Utiliser [[:​gnome-disk-utility|GNOME Disques]] au lieu de [[:​GParted]]   * 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"​.   * 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 des usages n'​ayant pas d'​alternative.+ 
 +<note help> 
 +Alternativement,​ il est toujours possible d'​utiliser la session X.org pour certains ​usages n'​ayant pas d'​alternative.
 </​note>​ </​note>​
-Wayland n'​autorise pas de manipulations aussi dangereuses : cette éventualité devrait désormais être gérée individuellement par chaque environnement/​application. 
  
-Une possibilité pour contourner ​ce problème ​est d'​utiliser xhost pour autoriser "​root"​ à accéder à la session X de l'​utilisateur. En tant qu'​utilisateur normal ​("//​localuser//"​ étant votre nom) :+<note warning>​**La commande décrite dans cette note réduit à néant les efforts de Wayland pour sécuriser la session.** 
 + 
 +Une possibilité pour contourner ​le mécanisme de sécurité de Wayland ​est d'​utiliser xhost pour autoriser "​root"​ à accéder à la session X de l'​utilisateur. En tant qu'​utilisateur normal :
 <​code>​xhost si:​localuser:​root</​code>​ <​code>​xhost si:​localuser:​root</​code>​
-Après la manipulation, ​retirez ​l'​accès :+Après la manipulation, ​il faut retirer ​l'​accès ​(sinon vous laisseriez un "​trou"​ dans la sécurité du système) ​:
 <​code>​xhost -si:​localuser:​root</​code>​ <​code>​xhost -si:​localuser:​root</​code>​
- +</​note>​ 
 + 
 +==== Applications non-compatibles ==== 
 + 
 +Plusieurs catégories d'​applications ont un fonctionnement reposant directement sur [[:Xorg]], et ne fonctionnent donc pas avec Wayland : 
 + 
 +  * Logiciels de capture d'​écran ([[:gimp]], ...). Plusieurs alternatives compatibles existent déjà (FIXME, ...) ; 
 + 
 +  * Logiciels de partage d'​écran (lors de visio-conférence avec [[:​jitsi#​visioconference_sans_rien_installer_jitsi_meet|meet.jit.si]],​ [[:​bigbluebutton]],​ TeamViewer, ...). Plusieurs alternatives compatibles existent déjà (FIXME : https://​askubuntu.com/​a/​1339294/​385361 ?, ...) ; 
 + 
 +  * Logiciels proposant une barre de tâches indépendante du compositeur et de l'​environnement (tint2, Docky, Cairo-Dock, ...). Utilisez donc plutôt votre environnement,​ il propose normalement une fonctionnalité équivalente ; 
 + 
 + 
 +  * Logiciels d'​assistance à distance (ex : DWService.net et RustDesk.com) 
 + 
 +===== Détecter les applications tournant sur Xwayland ===== 
 + 
 +La commande xlsclients liste les applications tournant sous Xwayland. 
 + 
 +Vous pouvez aussi installer [[:​tutoriel:​comment_installer_un_paquet|xeyes]]. Lancez l'​application et survolez avec la souris la fenêtre que vous voulez tester : Si les yeux bougent alors 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(Anglais)]].
 ===== Voir aussi ===== ===== Voir aussi =====
  
   * [[https://​wayland.freedesktop.org/​|Site officiel]]   * [[https://​wayland.freedesktop.org/​|Site officiel]]
 +  * [[:​fenetre_de_connexion#​gestion_de_wayland|Se connecter à Wayland]]
 +  * [[:Weston]]
 +  * [[:Mir]]
 +  * [[:Xorg]]
   * (en) [[https://​wiki.archlinux.org/​index.php/​wayland|Source principale]]   * (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]].
Ligne 115: Ligne 160:
 ----- -----
  
-//​Contributeurs : [[utilisateurs/​roschan]],​ ...// +//​Contributeurs : [[utilisateurs/​roschan]], [[utilisateurs/​amiralgaby]], ...//
  • wayland.1503690899.txt.gz
  • Dernière modification: Le 25/08/2017, 21:54
  • par L'Africain