Cet article traite de la manière dont la graphique est organisée dans Linux et des composants qui la composent. Il contient de nombreuses captures d'écran de différentes implémentations d'environnements de bureau.
Si vous ne faites pas trop la différence entre KDE et GNOME, ou si vous vous demandez quelles sont les autres alternatives, cet article est pour vous. Il s'agit d'un aperçu, et bien qu'il contienne de nombreux noms et quelques termes, le matériel sera également utile pour les débutants qui commencent à explorer Linux.
Le sujet peut intéresser aussi les utilisateurs avancés lors de la configuration de l'accès à distance et de la mise en œuvre d'un client léger. Je rencontre souvent des utilisateurs de Linux expérimentés qui affirment : « sur le serveur, il n'y a que la ligne de commande, et je ne prévois pas d'étudier la graphique plus en détail, car cela concerne uniquement les utilisateurs de base ». Mais même les connaisseurs de Linux découvrent avec étonnement et joie l'option « -X » de la commande ssh (et pour cela, il est utile de comprendre le fonctionnement et les fonctions du serveur X).

J'enseigne Linux depuis presque 15 ans dans «» et je suis sûr que beaucoup des plus de cinq mille personnes que j'ai formées lisent et écrivent certainement des articles sur Habr. Les cours sont toujours très intenses (la durée moyenne d'un cours est de cinq jours), et je dois aborder des sujets qui nécessitent au minimum dix jours pour un apprentissage approfondi. Et toujours, au cours de la formation, en fonction du public (s'il s'agit de débutants ou d'administrateurs expérimentés) et des « questions du public », je fais le choix de ce qui doit être détaillé et de ce qui peut être traité plus superficiellement, afin de consacrer plus de temps aux utilitaires en ligne de commande et à leur application pratique. Il y a suffisamment de sujets sur lesquels je dois faire quelques sacrifices. Il s'agit de « l'Histoire de Linux », « des différences entre les distributions Linux », « sur les licences : GPL, BSD, … », « sur la graphique et les environnements de bureau » (le sujet de cet article) et d'autres. Ce n'est pas que ces sujets ne soient pas importants, mais il y a généralement de nombreuses questions plus pertinentes « ici et maintenant » et seulement cinq jours… Cependant, pour une compréhension générale des bases du système d'exploitation Linux, comprendre la variété disponible (pour que même en utilisant une distribution spécifique de Linux, vous ayez tout de même une vision plus large de ce vaste monde qu'est « Linux »), il est utile et nécessaire d'étudier ces sujets.
Tout au long de l'article, je fournis des liens pour chaque composant pour ceux qui souhaitent approfondir le sujet, par exemple, vers des articles sur Wikipédia (en indiquant une version plus complète/utilisée lorsqu'il existe des articles en anglais et en russe).
Pour les exemples principaux et les captures d'écran, j'ai utilisé la distribution openSUSE. On aurait pu utiliser n'importe quelle autre distribution développée par la communauté, disposant d'un grand nombre de paquets dans le dépôt. Il est difficile, mais possible, de démontrer la diversité des environnements de bureau sur une distribution commerciale, car souvent, elles n’utilisent qu'un ou deux des environnements de bureau les plus connus. Cela permet aux développeurs de se concentrer sur la sortie d'un système d'exploitation stable et éprouvé. Sur ce système, j'ai installé tous les DM/DE/WM (explication de ces termes ci-dessous) que j'ai trouvés dans le dépôt.
Les captures d'écran avec des « cadres bleus » ont été réalisées sur openSUSE.
Les captures d'écran avec des « cadres blancs » ont été faites sur d'autres distributions, indiquées sur les captures.
Les captures d'écran avec des « cadres gris » ont été prises sur internet, comme exemples de designs de bureau des années passées.
Alors, commençons.
Les principaux composants qui composent la graphique
Je vais mettre en avant trois composants principaux et les énumérer dans l'ordre dans lequel ils se lancent au démarrage du système :
- DM (Display Manager);
- Serveur d'affichage;
- DE (Environnement de Bureau).
En outre, en tant que points supplémentaires importants dans l'Environnement de Bureau :
- Gestionnaire d'applications/Lanceur/Commutateur (bouton « Démarrer »);
- WM (Gestionnaire de Fenêtre);
- différents logiciels fournis avec l'environnement de bureau.
Détails sur chaque point.
DM (Display Manager)
La première application qui se lance au démarrage de la « graphique » est le DM (Display Manager), le gestionnaire d'affichage. Ses principales tâches :
- demander quels utilisateurs peuvent accéder au système, demander des données d'authentification (mot de passe, empreinte digitale);
- choisir quel environnement de bureau lancer.
À l'heure actuelle, plusieurs DM sont largement utilisés dans différentes distributions :
- (a remplacé ),
- ,
- ,
- .
- On peut également mentionner Fly-DM (utilisé dans AstraLinux).
Une liste des DM existants est maintenue à jour dans




Il convient de noter que les captures d'écran suivantes utilisent le même gestionnaire d'affichage LightDM, mais dans différentes distributions (les noms des distributions sont indiqués entre parenthèses). Évaluez à quel point ce DM peut paraître différent grâce au travail des designers de diverses distributions.





L'essentiel dans cette diversité est de comprendre qu'il existe une application qui gère le lancement des graphiques et l'accès de l'utilisateur à ces graphiques, et qu'il existe différentes implémentations de cette application, se distinguant par leur apparence et un peu par leurs fonctionnalités (choix des environnements de bureau, choix des utilisateurs, version pour les malvoyants, possibilité d'accès à distance via le protocole ).
Serveur d'Affichage
Le Serveur d'Affichage est une sorte de fondement graphique, dont la principale tâche est de travailler avec la carte graphique, le moniteur et divers dispositifs d'entrée (clavier, souris, pavés tactiles). Cela signifie que l'application (par exemple, un navigateur ou un éditeur de texte), qui est rendue dans la « graphique », n'a pas besoin de savoir comment travailler directement avec les dispositifs, elle n'a pas besoin de connaître les pilotes. Tout cela est pris en charge par X Window.
Lorsque l'on parle de Serveur d'Affichage, pendant de nombreuses années dans Linux, ainsi que dans Unix, on faisait référence à l'application ou simplement X (Les X).
Actuellement, de nombreuses distributions remplacent X par .
Vous pouvez également lire :
- ,
- ,
- (nécessaires pour le lancement à distance d'applications graphiques, par exemple en utilisant PuTTY).
Tout d'abord, lançons les X et quelques applications graphiques en eux.
Pratique « lancer les X et les applications en eux »
Je vais tout exécuter à partir d'un nouvel utilisateur webinaruser (ce serait plus simple, mais pas plus sûr, de tout faire depuis root).
- Comme les X ont besoin d'accéder aux dispositifs, je donne l'accès : J'ai déterminé la liste des dispositifs en vérifiant les erreurs lors du lancement des X dans le journal (/home/webinaruser/.local/share/xorg/Xorg.77.log)
% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*
- Après cela, je lance les X :
% X -retro :77 vt8 &
Options : * -retro — lance avec un fond classique « gris », au lieu du noir par défaut ; * :77 — je spécifie (tout nombre dans une plage raisonnable, seulement :0 est probablement déjà occupé par un graphique lancé) un numéro d'écran, un identifiant unique qui permettra de distinguer plusieurs X’ en cours d'exécution ; * vt8 — indique le terminal, ici /dev/tty8, sur lequel les X’ seront affichés).
- Lançons une application graphique :
Pour cela, nous définissons d'abord une variable par laquelle l'application saura vers quels X’ en cours d'exécution elle doit envoyer ce qu'il faut dessiner :
% export DISPLAY=":77"
Pour voir la liste des X’ en cours d'exécution, vous pouvez faire ainsi :
ps -fwwC X
Après avoir défini la variable, vous pouvez lancer des applications dans nos X’ — par exemple, je lance une horloge :
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Principales idées et conclusions de ce passage :
- Les X’ nécessitent un accès aux périphériques : terminal, carte graphique, dispositifs d'entrée,
- Les X’ n'affichent aucun élément d'interface — c'est une toile grise (si avec l'option « —retro ») ou noire de certaines dimensions (par exemple, 1920×1080 ou 1024×768), destinée à exécuter des applications graphiques.
- En observant le mouvement du « curseur », on voit que les X’ suivent les positions de la souris et transmettent cette information aux applications lancées dans ceux-ci.
- Les X’ interceptent également les frappes au clavier et transmettent cette information aux applications.
- La variable DISPLAY indique aux applications graphiques dans quel écran (chaque X’ est lancé avec un numéro d'écran unique) elles doivent dessiner les X’. (Il est également possible d'indiquer une machine distante dans cette variable et d'envoyer la sortie vers des X’ lancés sur une autre machine du réseau.) Puisque les X’ ont été lancés sans l'option -auth, il n'est pas nécessaire de se préoccuper de la variable XAUTHORITY ou de la commande xhost.
- Les applications graphiques (ou X-clients) sont dessinées dans les X’ — sans possibilité de les déplacer/fermer/modifier « -g (Largeur)x(Hauteur)+(DécalageDuBordGauche)+(DécalageDuHaut) ». Un signe « moins » indique respectivement le bord droit et le bord inférieur.
- Deux termes à mentionner : le serveur X (c'est ainsi qu'on appelle les X) et les clients X (c'est ainsi qu'on appelle toute application graphique lancée sous X). Il y a une légère confusion concernant cette terminologie, beaucoup l'interprètent de manière inverse. Dans le cas où je me connecte à un « serveur » (dans le jargon de l'accès à distance) depuis une « machine cliente » pour afficher sur mon écran une application graphique provenant du serveur, le serveur X s'exécute sur la machine où se trouve l'écran (c'est-à-dire sur la « machine cliente », et non sur le « serveur »), tandis que les clients X s'exécutent et fonctionnent sur le « serveur », même s'ils sont affichés sur l'écran de la « machine cliente ».

Composants DE
Examinons maintenant les composants qui composent généralement un bureau.
Composants DE : le bouton « Démarrer » et la « Barre des tâches »
Commençons par le célèbre bouton « Démarrer ». Il s'agit souvent d'un applet distinct utilisé sur la « Barre des tâches ». Il y a généralement aussi un applet pour basculer entre les applications lancées.

En regardant les différentes environnements de bureau, je regrouperais de tels outils sous le terme générique « Gestionnaire d'Applications (Lanceur/Switcher) », c'est-à-dire un outil pour gérer les applications (lancement et changement entre les applications lancées), et je mentionnerai des utilitaires qui sont des exemples de ce type d'application.
- Il peut prendre la forme d'un bouton « Démarrer » sur une « Barre des tâches » classique (s'étendant sur toute la longueur d'un des bords de l'écran) :
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2. - On peut également distinguer les « barres de tâches de type MacOS » (non s'étendant sur toute la longueur du bord de l'écran), bien que de nombreuses barres de tâches puissent s'afficher dans les deux variantes. Ici, la principale distinction est purement visuelle — la présence d'un « effet d'agrandissement des icônes au survol ».
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank. - Et/ou des services lançant des applications lors de l'appui sur des « touches de raccourci » (dans de nombreux environnements de bureau, un composant similaire doit forcément être présent et permet de configurer ses propres raccourcis) :
○ sxhkd.
- Il existe également divers « lanceurs » en forme de menus :
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Composants DE : WM (Gestionnaire de fenêtres)
WM (Gestionnaire de Fenêtres) — une application qui gère les fenêtres, permettant d'ajouter la fonctionnalité :
- déplacement des fenêtres sur le bureau (y compris le déplacement standard en maintenant la touche Alt en cliquant sur n'importe quelle partie de la fenêtre, pas seulement sur le titre);
- redimensionnement des fenêtres, par exemple, en les faisant glisser depuis le cadre de la fenêtre;
- ajoute au cadre de la fenêtre un "titre (title)" et des boutons de réduction/agrandissement/fermeture de l'application;
- la notion d'application qui est « au premier plan ».

Je vais énumérer les plus connus (en indiquant entre parenthèses le DE dans lequel ils sont utilisés par défaut):
- (GNOME3),
- (Mate),
- (GNOME2),
- (Cinnamon),
- (KDE),
- (XFCE),
- .

Je vais également énumérer les « anciens WM avec des éléments DE ». C'est-à-dire qu'en plus du gestionnaire de fenêtres, ils contiennent des éléments tels que le bouton « Démarrer » et les « Panneaux de tâches », plus typiques des DE complets. Bien que qu'ils soient considérés comme« anciens », si IceWM et WindowMaker ont déjà sorti leurs versions mises à jour en 2020. Il serait donc plus correct de les appeler « vétérans »:
- ,
- ,
- , , , ,
- …





En plus des « classiques » (« gestionnaires de fenêtres empilés »), il convient de noter séparément , qui permet de disposer les fenêtres comme des tuiles sur tout l'écran, et aussi, pour certaines applications, un bureau distinct pour chaque application lancée en plein écran. Cela peut être un peu déroutant pour ceux qui ne l'ont pas utilisé auparavant, mais comme je utilise ce type d'interface depuis longtemps, je peux dire que c'est tout à fait pratique et qu'on s'y habitue rapidement, après quoi les « gestionnaires de fenêtres classiques » ne semblent plus si pratiques.
- ,
- ,
- ,
- ,
- ,
- qtile,
- bspwm,
- herbstluftwm,
- …
- twin,
- .

Il convient également de mentionner le projet et le concept de « gestionnaire de fenêtres composite », utilisant l'accélération matérielle pour afficher la transparence, les ombres, et divers effets 3D. Il y a environ 10 ans, il y avait un boom des effets 3D sur les bureaux Linux. Aujourd'hui, de nombreux gestionnaires de fenêtres intégrés dans les DE utilisent partiellement ces capacités de composition. Récemment, un nouveau produit est apparu, — un produit avec des fonctionnalités similaires à celles de Compiz sous Wayland.

Une liste détaillée des différents gestionnaires de fenêtres peut également être consultée dans .
Composants DE : autres
Il convient également de noter les composants suivants du bureau (ici, j'utilise des termes anglais établis pour décrire le type d'application — ce ne sont pas les noms des applications elles-mêmes) :
- Applets :
- Le kit d'outils de widget (Widget toolkit) est souvent accompagné d'un ensemble « minimal » de logiciels :
DE (Environnement de bureau)
Les composants énumérés ci-dessus constituent ce que l'on appelle l'« Environnement de bureau ». Souvent, tous ses composants sont développés en utilisant les mêmes bibliothèques graphiques et en appliquant des principes de design similaires. Ainsi, un style général pour l'apparence des applications est au moins respecté.
Nous pouvons distinguer les environnements de bureau suivants qui existent actuellement :
GNOME et KDE sont considérés comme les plus répandus, suivi de près par XFCE.

Une comparaison selon divers critères sous forme de tableau peut être consultée dans l'article correspondant .
La diversité DE

Il existe même des exemples intéressants tirés de l'histoire : entre 2003 et 2007, un « bureau 3D » appelé « Project Looking Glass » a été développé pour Linux par la société Sun. J'ai moi-même utilisé ce bureau, ou plutôt « joué » avec, car son utilisation était difficile. Ce « design 3D » était écrit en Java à une époque où il n'y avait pas encore de cartes graphiques prenant en charge le 3D. Par conséquent, tous les effets étaient calculés par le processeur, et l'ordinateur devait être très puissant, sinon tout fonctionnait lentement. Mais le résultat était esthétique. Les tuiles d'applications en 3D pouvaient être tournées/dépliées. On pouvait passer dans un cylindre de bureau avec des fonds d'écran panoramiques à 360 degrés. Il y had plusieurs applications attrayantes, par exemple, écouter de la musique sous forme de « changement de CD », etc. Vous pouvez trouver des vidéos sur YouTube à propos de ce projet, mais la qualité de ces vidéos sera probablement médiocre, car à l'époque il n'y avait pas la possibilité de télécharger des vidéos en haute qualité.

Bureau léger. Ce projet existe depuis longtemps, depuis 1996. Dans les dernières années, il est devenu assez populaire, face aux environnements plus lourds KDE et GNOME, sur de nombreuses distributions nécessitant une interface de bureau légère et « classique ». Il propose de nombreuses personnalisations et un grand nombre de ses propres programmes : terminal (xfce4-terminal), gestionnaire de fichiers (thunar), visualiseur d'images (ristretto), éditeur de texte (mousepad).

Utilisé dans la distribution « Elementary OS ». On peut dire qu'il existe des « bureaux » qui sont développés et utilisés dans le cadre d'une distribution spécifique et qui ne sont pas beaucoup utilisés (pour ne pas dire « pas du tout utilisés ») dans d'autres distributions. Du moins, ils n'ont pas encore gagné en popularité et n'ont pas convaincu une grande partie du public des avantages de leur approche. Pantheon vise à construire une interface similaire à macOS.

Version avec panneau dock :

Une forte inclination vers les effets graphiques et les widgets (déjà à l'époque où d'autres environnements de bureau n'avaient pas de widgets sur le bureau, par exemple, un calendrier/horloge). Utilise ses propres bibliothèques. Dispose d'un grand ensemble de ses propres applications « élégantes » : terminal (Terminology), lecteur vidéo (Rage), visionneuse d'images (Ephoto).

C'est un fork d'Enlightenment17, utilisé dans la distribution BodhiLinux.

Initialement, une interface « classique » de bureau, créée en opposition à KDE, qui était écrite sur la bibliothèque QT, à l'époque distribuée sous une licence pas très pratique pour les distributions commerciales.

Depuis la troisième version de GNOME, il est livré avec le shell GNOME, qui a un « aspect non classique », ce qui n'a pas plu à tous les utilisateurs (tout changement brusque dans les interfaces est difficilement accepté par les utilisateurs). En conséquence, l'apparition de projets fork continuant à développer ce bureau dans un style « classique » : MATE et Cinnamon. Utilisé par défaut dans de nombreuses distributions commerciales. Dispose d'un grand nombre de paramètres et de ses propres applications.

Apparu sur la base de GNOME2 et continue le développement de cet environnement de personnalisation. Dispose d'un grand nombre de paramètres et de forks d'applications qui étaient déjà utilisées dans GNOME2 (des nouveaux noms sont utilisés) afin de ne pas confondre les forks avec leur nouvelle version pour GNOME3).

Fork de GNOME Shell, fournissant aux utilisateurs une interface dans un style « classique » (comme c'était le cas dans GNOME2).
Dispose d'un grand nombre de paramètres et des mêmes applications que pour GNOME Shell.

Fork de GNOME dans un style « classique », qui s'est développé dans le cadre de la distribution Solus, mais qui est maintenant également disponible en tant que bureau autonome sur diverses autres distributions.

(ou, comme on l'appelle souvent, simplement KDE)
Environnement de bureau développé dans le cadre du projet KDE.
Il dispose d'un grand nombre de paramètres accessibles aux utilisateurs via l'interface graphique et de nombreuses applications graphiques développées dans le cadre de ce bureau.

En 2008, KDE a sorti sa nouvelle implementation de KDE Plasma (le moteur de bureau a été largement réécrit). Comme avec GNOME/MATE, tous les fans de KDE n'ont pas apprécié cela. Cela a conduit à la création d'un fork du projet, continuant le développement de la version précédente, appelé TDE (Trinity Desktop Environment).

Un des nouveaux environnements de bureau, écrit en utilisant Qt (sur lequel KDE est construit). Il offre de nombreuses options de personnalisation et dispose d'une interface assez esthétique (bien que cela soit subjectif) et bien conçue. Développé dans le cadre de la distribution Deepin Linux. Il existe également des paquets pour d'autres distributions.

Fly
Exemple d'un environnement de bureau écrit en utilisant Qt. Développé dans le cadre de la distribution Astra Linux.

Un environnement de bureau léger. Comme plusieurs exemples précédents, il est écrit en utilisant Qt. C'est en fait la continuation du projet LXDE et le résultat d'une fusion avec le projet Razor-qt.
Comme vous pouvez le voir, un bureau Linux peut avoir des apparences très variées et chacun y trouvera une interface qui lui convient : des plus esthétiques avec des effets 3D aux plus minimalistes, des « classiques » aux plus inhabituelles, des très gourmandes en ressources systèmes aux légères, des grands écrans aux tablettes/smartphones.
J'espère avoir réussi à donner un aperçu des composants principaux qui composent l'interface graphique et le bureau sous OS Linux.
Le matériel pour cet article a été testé en juillet 2020 lors d'un webinaire. Vous pouvez le visionner. .
C'est tout. J'espère que cela a été utile. Si vous avez des questions ou des commentaires, n'hésitez pas à écrire. Je serai ravi de répondre. Et n'oubliez pas de venir apprendre à !
Source : habr.com
