Interfaces graphiques
Prérequis et objectifs
1. Prérequis
Disposer d’un matériel compatible avec le serveur X.
Avoir les accès root.
Savoir utiliser un éditeur.
Disposer d’un ou de plusieurs comptes de test.
2. Objectifs
À la fin de ce chapitre, vous serez en mesure :
De comprendre le fonctionnement de X.
De connaître le principe des gestionnaires de fenêtre.
De connaître les principaux toolkits et widgets.
D’installer xorg.
De configurer xorg via les commandes standards.
De comprendre et modifier le fichier xorg.conf à la main.
D’accéder aux traces du serveur X.
De configurer les gestionnaires d’affichage xdm, gdm, kdm et lightDM.
De démarrer le système en mode graphique.
D’ouvrir une session graphique.
De configurer sa session personnelle.
De choisir un gestionnaire de fenêtre ou un environnement de bureau.
De connaître les fonctionnalités de gestion de l’accessibilité.
De connaître le rôle et les fonctionnalités de Wayland.
D’exporter l’affichage vers un autre serveur X.
D’ouvrir une session graphique distante avec RDP, VNC ou Spice.
Comment fonctionne un environnement graphique ?
Linux propose une architecture graphique permettant aux utilisateurs d’accéder au système et aux applications via une interface graphique simple ou via différents environnements de bureau complets. Cependant ces fonctionnalités sont souvent désactivées sur les serveurs, où l’interface ligne de commande (CLI, Command Line Interface) est privilégiée car moins consommatrice de ressources et plus facile à automatiser par des scripts.
1. Le système X Window
Alors que dans d’autres systèmes d’exploitation l’interface graphique est intégrée au système, Linux dispose d’une architecture graphique optionnelle implémentée au-dessus du système lui-même. Le système graphique de base, d’origine Unix, s’appelle X Window et s’appuie sur une architecture client-serveur X11, constituée de serveurs et de clients X communiquant à travers le protocole client-serveur X11..
X Window constitue un système graphique complet chargé de dessiner et de gérer les événements des composants habituels d’un environnement graphique utilisateur GUI (Graphical User Interface) : fenêtres, boutons, menus, listes, ascenseurs, cases à cocher, curseur de souris, etc. X Window peut afficher, gérer et afficher ces composants graphiques mais n’est pas chargé de les mettre en place. X Window ne gère que les interactions entre l’homme et la machine.
Architecture X Window
X windows fonctionne en mode client/serveur. Le serveur X est un composant logiciel gérant les périphériques graphiques :...
Wayland
Wayland est un protocole de communication entre un gestionnaire de fenêtres (le compositeur) et ses clients. La bibliothèque Wayland est utilisable nativement par les applications. Wayland a été développé dans le but de remplacer Xorg, devenu lourd, moins sûr (les communications entre le client et le serveur transitent en clair), et peu performant. L’implémentation de Wayland sous Linux se nomme Weston.
Wayland ne rend pas caduque l’utilisation de X Window : certains environnements et applications en ont encore besoin. Le composant XWayland permet une compatibilité des applications X avec Wayland.
Les versions les plus récentes des distributions implémentent généralement Wayland par défaut, mais peuvent également utiliser Xorg. Les versions plus anciennes, Ubuntu 19.10, openSUSE 15.1 et Red Hat Linux 7 utilisent Xorg nativement par défaut.
La certification LPIC-1 ne demande qu’une connaissance de base de Wayland et se focalise sur Xorg.
Les variables d’environnement WAYLAND_DISPLAY ou XDG_SESSION_TYPE permettent de savoir si Wayland est utilisé.
Exemple
$ echo $WAYLAND_DISPLAY
wayland-0
ou
$ echo $XDG_SESSION_TYPE
x11
La commande xlsclients fournit la liste des clients X actifs. Si une application graphique démarrée est absente, c’est qu’elle utilise Wayland.
Exemple...
Xorg
Linux utilisait initialement l’environnement X Window libre XFree86. Suite au changement de licence de ce logiciel, un « fork » (création d’une nouvelle branche de développement) a été à l’origine de la création de X.org. Appelé communément Xorg, il est devenu l’environnement X Window principal de Linux.
X.org est rapide, modulaire, disponible avec de nombreux pilotes, compatible. Les dernières versions détectent automatiquement le matériel, sans qu’il faille le déclarer dans un fichier de configuration complexe.
Logo Xorg
La dernière version de Xorg, en février 2020, est la 1.20.7 qui se base sur la version 7.7 de X11.
1. Installation
Xorg est disponible avec toutes les distributions Linux, même si Wayland est souvent installé par défaut dans les versions récentes.
Xorg est installé par défaut dans /usr/X11R6. Cependant de nombreuses distributions placent maintenant les binaires, les bibliothèques, les fichiers partagés, etc., dans l’arborescence classique /usr et notamment les modules et les pilotes dans /usr/lib/xorg (ou /usr/lib64/xorg).
La configuration est dans le répertoire /etc/X11.
Exemple
Paquets logiciels Xorg installés sur une distribution Debian 12 :
# dpkg -l| grep ^ii| grep -i xorg | awk '{print $2,$3}'
xorg 1:7.7+23
xorg-docs-core 1:1.7.1-1.2
xorgxrdp 1:0.9.19-1
xserver-xorg 1:7.7+23
xserver-xorg-core 2:21.1.7-3
xserver-xorg-input-all 1:7.7+23
xserver-xorg-input-libinput 1.2.1-1+b1
xserver-xorg-input-wacom 1.1.0-1
xserver-xorg-legacy 2:21.1.7-3
xserver-xorg-video-all 1:7.7+23
xserver-xorg-video-amdgpu 23.0.0-1
xserver-xorg-video-ati 1:19.1.0-3
xserver-xorg-video-fbdev 1:0.5.0-2
xserver-xorg-video-intel 2:2.99.917+git20210115-1
xserver-xorg-video-nouveau 1:1.0.17-2
xserver-xorg-video-qxl 0.1.5+git20200331-3
xserver-xorg-video-radeon 1:19.1.0-3
xserver-xorg-video-vesa 1:2.5.0-1+b1
xserver-xorg-video-vmware 1:13.3.0-3.1+b1
2. Configuration de Xorg
a. Via la distribution
Le fichier de configuration principal de Xorg est /etc/X11/xorg.conf, complété ou remplacé par les fichiers dans /etc/X11/xorg.conf.d. Il est rare d’avoir à...
Le gestionnaire d’affichage (Display Manager)
Le Display Manager, ou gestionnaire d’affichage, est un élément de X Window qui se charge de la connexion des utilisateurs, locaux ou distants, de leur authentification, puis qui charge leur environnement de travail en leur ouvrant une session. Il gère un ensemble d’affichages X, qui peuvent être locaux ou distants.
Pour les connexions distantes, le Display Manager s’appuie sur le protocole standard XDMCP (X Display Manager Control Protocol).
Le Display Manager est l’équivalent graphique des services proposés par init, getty et login : il demande des identifiants et mots de passe, authentifie les personnes et ouvre une session.
Le gestionnaire par défaut se nomme XDM (X Display Manager). Il est léger et fonctionne avec tous les serveurs X.
Une session X est gérée par un gestionnaire de session (session manager), généralement le gestionnaire de fenêtre ou un terminal graphique. Quand la session se termine, la boîte de dialogue de connexion de XDM est réaffichée.
Il est possible d’ouvrir plusieurs sessions X depuis un seul Display Manager, y compris sur une même machine.
Linux dispose de plusieurs Display Manager mais trois sont principalement utilisés :
-
XDM : version de base.
-
GDM : version proposée par GNOME.
-
KDM : version proposée par KDE.
Les versions GDM et KDM sont évoluées : elles proposent la même chose que XDM avec des fonctionnalités supplémentaires :
-
Liste des utilisateurs.
-
Icones (avatars) associées.
-
Choix d’une session graphique particulière (GNOME, fvwm, KDE, etc.).
-
Possibilité de connexion automatique.
-
Thèmes graphiques.
-
Liste des serveurs X distants (XDMCP).
-
Passage d’un utilisateur à un autre.
-
etc.
1. XDM
Bien que XDM ne soit plus beaucoup utilisé, il est intéressant de comprendre son fonctionnement car les autres gestionnaires d’affichage reprennent sa configuration de base. La configuration de XDM se situe dans /etc/X11/xdm. Le premier fichier chargé est xdm-config. Toutes ses lignes suivent la syntaxe :
DisplayManager.Ressource: valeur
Chaque ligne représente une ressource de XDM.
Exemple
Les lignes en gras montrent quelques autres scripts de configurations appelés...
Gestionnaire de fenêtres et l’environnement personnel
1. Via le gestionnaire d’affichage
L’utilisateur détermine généralement le type d’environnement graphique chargé par la session X depuis GDM ou KDM et le menu associé. Ceux-ci reprennent la session précédente comme session par défaut grâce à la présence du fichier .dmrc dans le répertoire de connexion de l’utilisateur.
Exemple
cat $HOME/.dmrc
[Desktop]
Session=ubuntu
Sur les versions plus récentes, l’information se trouve dans /var/lib/ServiceAccounts/users/$USER. Le fichier porte le nom de l’utilisateur.
Exemple
# cat /var/lib/ServiceAccounts/users/pba
[User]
Language=
Session=
XSession=icewm-session
Icon=/home/pba/.face
SystemAccount=false
Les fichiers de description des sessions sont placés dans /usr/share/xsessions.
Exemple
$ ls -l /usr/share/xsessions/
total 12
-rw-r--r-- 1 root root 207 oct. 4 13:16 gnome.desktop
-rw-r--r-- 1 root root 2274 sept. 21 03:30 plasma.desktop
-rw-r--r-- 1 root root 238 oct. 4 13:16 ubuntu.desktop
Chaque fichier desktop représente une session possible. Les descriptions et les commandes de lancement sont présentes dans chacun des fichiers, et notamment via les lignes Exec et Name :
Exemple
$ grep -E "Exec|Name=" /usr/share/xsessions/*.desktop
/usr/share/xsessions/gnome.desktop:Name=GNOME
/usr/share/xsessions/gnome.desktop:Exec=gnome-session --session=gnome
/usr/share/xsessions/gnome.desktop:TryExec=gnome-shell
/usr/share/xsessions/plasma.desktop:Exec=/usr/bin/startkde
/usr/share/xsessions/plasma.desktop:TryExec=/usr/bin/startkde
/usr/share/xsessions/plasma.desktop:Name=Plasma
/usr/share/xsessions/ubuntu.desktop:Name=Ubuntu
/usr/share/xsessions/ubuntu.desktop:Exec=/usr/lib/gnome-session/
run-systemd-session ubuntu-session.target
/usr/share/xsessions/ubuntu.desktop:TryExec=unity
2. startx
Depuis une session...
Bureau distant
1. RDP
RDP (Remote Desktop Protocol) est un protocole d’accès à un bureau à distance, développé par Microsoft, pour des systèmes Windows. Des clients et même des serveurs sont disponibles pour tous les systèmes d’exploitation, notamment sous Linux. Il est possible de sécuriser le protocole à l’aide de certificats.
Le serveur s’appelle xrdp. Il est disponible pour la plupart des distributions via le paquet logiciel du même nom:
Exemple
Installation du paquet logiciel :
Distribution de type Red Hat (du dépôt EPEL) :
# yum -y install xrdp
Distribution de type Debian :
# apt-get install xrdp # Ubuntu ou Debian
Démarrage et activation automatique :
# systemctl start xrdp
# systemctl enable xrdp
Le serveur RDP écoute sur le port 3389 en TCP. Il faut donc autoriser les connexions entrantes sur ce port au niveau du firewall.
Exemple
Distribution de type Red Hat :
# firewall-cmd --permanent --zone=public --add-port=3389/tcp
# firewall-cmd --reload
Distribution de type Debian :
# ufw allow 3389/tcp
# systemctl restart xrdp
La connexion au serveur RDP s’effectue depuis un logiciel client, sous Windows, MacOS ou Linux.
Pour Linux on peut utiliser les logiciels remmina (qui gère aussi VNC ou Spice), tsclient, etc.
Exemple
Connexion sur un serveur RDP Debian 12, depuis Windows, avec...
Accessibilité
Certains utilisateurs souffrent de troubles entraînant des difficultés pour lire un écran, écrire sur un clavier ou utiliser une souris. Linux et ses outils proposent divers moyens pour les aider.
Il s’agit ici de survoler quelques moyens disponibles pour aider les personnes handicapées, notamment moteurs ou ayant des problèmes de vue.
1. Assistance au clavier et à la souris
Un simple réglage du clavier ou de la souris peut aider une personne ayant des problèmes moteurs. Le module AccessX de l’environnement graphique permet de nombreux réglages. Ceux-ci sont accessibles depuis les centres de configuration des environnements graphiques. Sous KDE par exemple, le module Accessibilité de la section Personnalisation de la configuration du système propose de modifier de nombreux réglages par défaut, dont le fonctionnement du clavier. Par exemple, dans l’onglet Filtres du clavier, cochez Utiliser les touches lentes. Si une personne veut effectuer une action, elle ne sera prise en compte qu’après le délai choisi (0,5 secondes par défaut, réglable). En dessous, Utiliser les touches non répétées attend le délai indiqué avant de répéter une touche en cas d’appui trop long.
Les paramètres d’accessibilité de KDE4 Plasma 54
Dans le même...
Validation des acquis : questions/réponses
1. Questions
Si l’état de vos connaissances sur ce chapitre vous semble suffisant, répondez aux questions ci-après.
X Window
1 Quel composant de X Window permet aux clients et serveurs X de communiquer ?
-
A - Xt
-
B - Motif
-
C - Xlib
-
D - Qt
2 Est-il possible qu’une application X exécutée sur une machine s’affiche sur une autre machine ?
3 Qui définit le modèle et le style des fenêtres ?
4 Est-il possible de choisir son gestionnaire de fenêtres ?
5 Qu’est-ce qu’un Widget ?
-
A - Une fonction de gestion de fenêtre.
-
B - Un élément de base de l’interface graphique.
-
C - Un style d’affichage.
-
D - Une bibliothèque de gestion des événements.
6 Citez au moins deux toolkits différents et courants.
7 Que pouvez-vous faire si trop de fenêtres sont ouvertes sur votre bureau ?
Xorg
8 Où se situe le fichier de configuration de Xorg ?
9 Quelle est la meilleure méthode pour installer Xorg ?
10 Citez quatre moyens permettant de configurer X Window.
11 Quelle section du fichier de configuration de Xorg permet de paramétrer un clavier ou une souris ?
-
A - InputDevice
-
B - Mouse
-
C - Keyboard
-
D - Modules
12 Quelle option liée au pilote kbd permet de modifier la langue du clavier ?
13 Votre souris dispose d’une molette reconnue comme étant constituée des boutons 4 et 5. Quelle option devez-vous rajouter dans la section concernée de Xorg ?
14 Le démarrage de X provoque l’affichage d’un écran gris avec une croix au milieu et rien d’autre. Que se passe-t-il ?
Les gestionnaires d’affichage
15 À quoi sert le gestionnaire d’affichage ?
-
A - À ouvrir une session graphique locale.
-
B - À ouvrir une session graphique distante.
-
C - À authentifier un utilisateur.
-
D - À gérer des sessions X multiples.
16 Quel est le nom du protocole X permettant de gérer les connexions et ouvertures de sessions distantes ?
17 Est-il possible de lancer KDE depuis GDM ?
18 Quel est le premier fichier exécuté dans l’environnement graphique de l’utilisateur après sa connexion ?
19 Où un utilisateur peut-il placer sa propre configuration de session ?...
Travaux pratiques
1. Comprendre X Window
1. |
Depuis un système en mode non graphique (run level 3 ou cible systemd multi-user par exemple), lancez le serveur X Window seul, en tâche de fond. Vous devez voir un écran gris et une croix au milieu. Quelles sont les actions possibles ? |
2. |
Appuyez sur les touches [Alt][Ctrl][F1] puis [Ctrl] C. Vous voici de nouveau sur la console en mode texte. Exportez la variable DISPLAY qui permet d’indiquer aux clients X les « coordonnées » du serveur X. |
3. |
Toujours depuis la console, après avoir exporté la variable, exécutez le programme twm en tâche de fond (installez le paquet logiciel twm si nécessaire). |
4. |
Passez sous X Window avec la combinaison [Alt][F7]. Cliquez sur le bouton gauche de la souris. Que se passe-t-il ? |
5. |
Depuis Xterm, tapez la commande xclock. |
Solutions possibles
1. |
Depuis un système en mode non graphique (run level 3 ou cible systemd multi-user par exemple), lancez le serveur X Window seul, en tâche de fond. Vous devez voir un écran gris et une croix au milieu. Quelles sont les actions possibles ?
À part bouger la souris, rien ne fonctionne : il n’y a ni gestionnaire de fenêtres, ni programmes lancés. |
2. |
Appuyez sur les touches [Alt][Ctrl][F1] puis [Ctrl] C. Vous voici de nouveau sur la console en mode texte. Exportez la variable DISPLAY qui permet d’indiquer aux clients X les « coordonnées » du serveur X.
|
3. |
Toujours depuis la console, après avoir exporté la variable, exécutez le programme twm en tâche de fond (installez le paquet logiciel twm si nécessaire).
|
4. |
Passez sous X Window avec la combinaison [Alt][F7]. Cliquez sur le bouton gauche de la souris. Que se passe-t-il ? Vous avez lancé twm qui est un gestionnaire de fenêtres basique. Le bouton droit vous permet d’accéder à un menu. Dans ce menu, cliquez sur Xterm, ou équivalent. La fenêtre Xterm se dessine. Cliquez sur l’écran pour la placer. |
5. |
Depuis Xterm, tapez la commande xclock.
Placez la nouvelle fenêtre. Pour fonctionner, X nécessite un environnement de base... |