Apprendre Linux 101 : installer et configurer X11

Le fichier de configuration de X Window

Au début de X, configurer un écran signifiait avoir une connaissance approfondie des capacités de l’écran et la capacité d’exprimer des informations concernant non seulement la résolution, mais aussi les valeurs de synchronisation horizontale et verticale, la profondeur des couleurs, etc. Depuis l’avènement de la Video Electronics Standards Association (VESA) et des protocoles Display Data Channel (DDC) qui permettent à un écran de communiquer ces capacités à une carte graphique et donc à un ordinateur, la configuration est devenue beaucoup plus automatique. C’est une chance, car nous nous attendons maintenant à pouvoir emporter notre ordinateur portable partout et à pouvoir simplement brancher un écran externe ou un projecteur disponible.

La configuration de votre souris, de votre trackball ou de votre clavier est également devenue plus automatique. En général, il suffit de brancher le périphérique, souvent via une connexion USB, et il fonctionne.

Cependant, comme pour la plupart des choses dans Linux, il existe un mécanisme de configuration sous-jacent que vous pouvez utiliser. En fait, l’implémentation Xorg de X obtient des informations de configuration à partir de plusieurs sources. Le fichier de configuration principal est xorg.conf, ainsi que les fichiers inclus dans le répertoire xorg.conf.d. Ceux-ci sont généralement situés dans /etc/X11. Une configuration supplémentaire peut provenir des options de la ligne de commande, des variables d’environnement, de l’autodétection et des valeurs par défaut de repli.

Le fichier de configuration xorg.conf et les fichiers du répertoire xorg.conf.d sont organisés en sections qui peuvent être spécifiées dans n’importe quel ordre. Le format général des sections est présenté dans le Listing 1.

Listing 1. Disposition des sections dans xorg.conf

 Section "SectionName" SectionEntry ... EndSection

Show moreShow more icon

Xorg avec l’option -configure. La commande Xorg est en fait un lien symbolique de la commande X habituellement située dans /usr/bin. Vous devez exécuter la commande Xorg en tant que root et vous assurer qu’aucun serveur X n’est en cours d’exécution. Une façon de le faire est de modifier votre stanza GRUB2 pour démarrer en mode multi-utilisateur sans X. Traditionnellement, il s’agit du niveau d’exécution 3. Editez simplement l’entrée du menu de démarrage que vous souhaitez démarrer et ajoutez un 3à la fin de la ligne `linux boot/vmlinuz…’ comme illustré dans la Figure 2.

Figure 2. Démarrage en mode multi-utilisateur sans X

Si vous utilisez systemd, vous pouvez utiliser systemd.unit=multi-user.target au lieu de 3.

Xorg -configure charge les pilotes de périphériques disponibles et sonde le matériel. Il fonctionne sur de nombreux systèmes, mais a des problèmes sur certains systèmes selon la page de manuel. La documentation Fedora recommande d’utiliser l’affichage :1 au lieu de l’affichage :0 par défaut, vous pouvez donc essayer Xorg :1 -configure si Xorg -configure ordinaire ne fonctionne pas.

Un exemple de fichier généré à l’aide de cette méthode sur mon système openSUSE Tumbleweed est présenté dans le Listing 2.

Listing 2. Exemple xorg.conf

En supposant que votre écran supporte le DDC,comme la plupart des écrans modernes, vous pouvez utiliser la commande xrandr pour interroger ses capacités. Le Listing 4 montre les informations drm pour un ordinateur portable avec un écran connecté et la sortie correspondante de xrandr.

Listing 4. Utilisation de xrandr pour déterminer les capacités d’affichage

XkbVariant définit quelles variantes des deux dispositions doivent être utilisées. Dans le cas de la disposition us, sa variante par défaut est utilisée. Dans le cas de la disposition sk, sa variante qwerty est utilisée. L’option XkbOptions indique que les utilisateurs peuvent basculer entre les dispositions en utilisant la touche CapsLock.

Liste 5. Mise à jour de la configuration du clavier

localectl. Cependant, localectl status montre que ces changements ont été repris lorsque le système a été redémarré, comme indiqué dans le Listing 6.

Listing 6. Affichage de l’état du clavier à l’aide de localectl

Les gestionnaires d’affichage se répartissent en trois catégories générales.

  1. Les gestionnaires de fenêtre de tuiles divisent l’écran en tuiles et écrivent chaque tuile séparément des autres. Les performances sont généralement bonnes.
  2. Les gestionnaires de fenêtres empilables empilent les fenêtres individuelles sur l’écran dans une liste connue sous le nom d’ordre Z. Lorsqu’une nouvelle fenêtre reçoit le focus, elle est placée au sommet de l’ordre Z et toutes les fenêtres inférieures sont redessinées. Cela peut être lent, en particulier pour des changements mineurs, mais plusieurs optimisations ont été développées.
  3. Les gestionnaires de fenêtres de composition sont généralement des gestionnaires de fenêtres d’empilement qui conservent un tampon pour chaque fenêtre, puis les combinent en un seul tampon pour l’affichage sans avoir besoin de redessiner chaque fenêtre individuelle, puis de l’écraser avec la suivante supérieure dans l’ordre Z. Cela permet également des effets tels que la transparence.

La figure 3 montre un exemple du gestionnaire de fenêtres de tuiles I3. On commence avec un bureau vide, puis on crée une fenêtre telle qu’une fenêtre de terminal. Celle-ci occupe la totalité de l’écran. Vous pouvez ensuite ouvrir une autre fenêtre qui divise la tuile d’origine en deux. Si vous en ouvrez ensuite une autre, l’écran est divisé en trois tuiles. Vous pouvez choisir de créer de nouvelles tuiles horizontalement ou verticalement. Dans cet exemple, j’ai choisi de diviser verticalement la tuile centrale d’origine contenant le jeu de sudoku, pour créer une autre petite fenêtre de terminal. Puis j’ai divisé cela horizontalement pour ajouter une fenêtre xlcock.

Figure 3. Le gestionnaire de fenêtres en tuiles I3

Vous pouvez généralement déplacer les fenêtres entre les bureaux virtuels, ce qui aide beaucoup si vous avez plusieurs grandes fenêtres ouvertes.

Vous pouvez ouvrir la liste des applications disponibles sous forme de menu en haut de l’écran et sélectionner les applications par un défilement horizontal lent ou plus rapidement en tapant une partie ou la totalité d’un nom tel que ‘xclock’.

Contrairement aux gestionnaires de fenêtres à tuiles, les gestionnaires de fenêtres à empilement vous permettent d’avoir des fenêtres de n’importe quelle taille supportée par votre écran, y compris des fenêtres qui peuvent chevaucher le bord de l’écran. La figure 4 est un exemple du gestionnaire de fenêtres empilées Openbox montrant quatre fenêtres qui se chevauchent et le menu qui vous permet d’ouvrir de nouvelles applications.

Figure 4. Le gestionnaire de fenêtres empilées Openbox

Les gestionnaires de fenêtres empilées de base fonctionnent sur le principe de redessiner toutes les fenêtres de votre affichage lorsque la fenêtre avec le focus change ou est déplacée, fermée ou redimensionnée. Cela peut entraîner de multiples réécritures de diverses zones de l’écran, car l’ensemble de l’ordre Z est traité. Des algorithmes peuvent être utilisés pour minimiser la quantité de réécriture inutile.

Une amélioration de l’idée de base de l’empilement est un gestionnaire de fenêtre de composition. Un tel gestionnaire de fenêtres conserve un tampon du contenu de chaque fenêtre et les fusionne ou les compose en une seule fenêtre. Seules les parties mises à jour doivent alors être écrites dans le tampon de la carte d’affichage. Compiz est un exemple de gestionnaire de fenêtres de composition, tandis que les environnements de bureau tels que KDE et GNOME utilisent également des gestionnaires de fenêtres de composition.

Un environnement de bureau fournit généralement une expérience utilisateur complète, y compris des choses telles qu’un salueur de connexion graphique, des menus système graphiques, un plateau pour afficher des widgets tels que l’heure du jour, des icônes d’applications ouvertes, et ainsi de suite. Une suite d’applications intégrées offre généralement une expérience cohérente à l’utilisateur. La plupart des gestionnaires de fenêtres sont beaucoup plus légers qu’un environnement de bureau complet.

La figure 5 illustre le concept de transparence dans un gestionnaire de fenêtres ou un environnement de bureau de composition. Maintenez le bouton gauche de la souris (bouton 1) enfoncé sur la barre de titre de la fenêtre du terminal lorsque vous vous préparez à la déplacer. L’affichage change pour montrer quelles fenêtres se trouvent sous cette zone particulière. Cela pourrait vous aider à déplacer une fenêtre pour qu’elle ne soit pas au-dessus d’une autre lorsque vous voudriez que les deux soient visibles.

Figure 5. Transparence avec le bureau KDE Plasma

Figure 6 illustre GNOME 3.28 sur Fedora. En cliquant sur le bouton Activités en haut à gauche de cet écran, on ouvre une liste iconisée de favoris sur le côté gauche de l’écran et on affiche un ensemble d’applications en cours d’exécution sous forme de petites fenêtres. Vous pouvez cliquer sur un favori, sur une petite fenêtre, ou utiliser la boîte de recherche en haut de l’écran pour rechercher un programme. Dans cet exemple particulier, j’ai cliqué sur le jour et l’heure dans la barre supérieure pour ouvrir un widget qui affiche certains messages, comme les mises à jour disponibles ou la dernière commande effectuée, ainsi que des informations supplémentaires sur la date et l’heure. Les icônes situées dans la partie supérieure droite permettent d’accéder à des fonctions telles que le volume du haut-parleur, les paramètres réseau, les options d’accessibilité et les options d’arrêt, de déconnexion ou de redémarrage.

Figure 6. Activités et widgets de Fedora GNOME

J’ai mentionné que les environnements de bureau contiennent fréquemment des applications intégrées pour vous aider à gérer divers aspects du bureau ou du système. La figure 7 montre la boîte de dialogue des paramètres de Fedora GNOME 3.28 ouverte au niveau des paramètres d’affichage. Cet exemple provient d’un ordinateur portable équipé d’un moniteur Viewsonic externe. Les choix courants dans ce cas sont de réunir les deux écrans en un seul ou d’afficher en miroir le contenu d’un écran sur l’autre. Dans ce cas, nous choisissons de joindre les deux écrans avec l’écran intégré logiquement à droite du moniteur externe.

Figure 7. Dialogue des paramètres d’écran de Fedora GNOME

Comme vous pouvez modifier la résolution de l’écran dans le fichier xorg.conf, vous pouvez également indiquer au compositeur de mettre à l’échelle la fenêtre à 100% ou 200%. La mise à l’échelle disponible peut dépendre de la taille du moniteur ainsi que du bureau particulier que vous utilisez. Je possède également un moniteur UHD (4K) et des yeux qui ne peuvent pas lire la très petite résolution native du texte. Donc, sur ce moniteur, j’utilise fréquemment un facteur d’échelle de 200%.

Notez que les modifications apportées à l’aide des paramètres GNOME ne mettent pas à jour xorg.conf. Au lieu de cela, ces paramètres sont enregistrés dans le fichier .config/monitors.xml dans votre répertoire personnel. GNOME maintient également d’autres paramètres d’affichage et de clavier dans la base de données dconf que vous pouvez également trouver sous votre répertoire personnel. En ayant ces paramètres dans votre répertoire personnel, ils ne s’appliquent qu’à vous. Les autres utilisateurs peuvent avoir des paramètres différents.

Si vous avez plusieurs environnements de bureau ou gestionnaires de fenêtres installés, vous vous demandez peut-être comment choisir entre eux. Vous pouvez démarrer en mode multi-utilisateurs comme décrit précédemment dans ce tutoriel, puis exécuter une commande telle que startx pour démarrer X avec le gestionnaire approprié. Si vous avez un environnement de bureau tel que GNOME fournissant un greeter,vous aurez probablement un choix de paramètres sur l’écran du greeter. La figure 8 montre les choix installés sur mon système Fedora 28.

Figure 8. Écran d’accueil Fedora GNOME 3 avec sélection WM

Gérer l’accès au serveur X et afficher les applications à distance

Jusqu’ici, vous avez vu des exemples de X s’exécutant sur un ordinateur de bureau avec un, ou peut-être deux moniteurs. Un serveur X traite un seul écran comme une collection de moniteurs qui partagent un ensemble commun de périphériques d’entrée.

Donc l’ordinateur portable illustré dans la Figure 7 n’a qu’un seul écran, même s’il possède le moniteur intégré et un moniteur externe. Dans cet exemple, les deux moniteurs fonctionnent comme s’ils étaient réunis. Cela donne un seul écran logique qui permet de déplacer les fenêtres entre les moniteurs, ou même de les diviser. Les systèmes multi-utilisateurs ont généralement plusieurs écrans, vous avez donc besoin d’un moyen de les décrire.

X utilise un nom en trois parties pour les écrans de la forme hostname:displaynumber.screennumber où hostname est le nom d’hôte de l’ordinateur, displaynumber est un nombre commençant à 0 qui décrit l’écran particulier, et screennumber s’applique si deux ou plusieurs moniteurs sont traités comme des écrans séparés plutôt que comme un seul écran logique. Le nom d’hôte et le numéro d’écran peuvent être omis, de sorte que la notation d’affichage la plus courante que vous verrez est :0. Vous pouvez voir votre paramètre actuel dans la variable d’environnement DISPLAY comme indiqué dans le Listing 7.

Listing 7. La variable d’environnement DISPLAY

ian@attic5-u18:~$ echo $DISPLAY:0

Show moreShow more icône

DISPLAY permettrait à n’importe quel utilisateur d’écrire la sortie sur votre écran, mais X a quelques limitations de contrôle d’accès. Je vais vous montrer trois façons de vous connecter à un serveur X.

  1. Utiliser ssh avec X forwarding
  2. Utiliser Xauthority et xauth
  3. utiliser le contrôle de l’hôte ou de l’utilisateur avec xhost

La façon la plus sûre d’utiliser X sur un autre écran est d’utiliser X forwarding (parfois appelé tunneling). Cela doit être activé sur le serveur SSH auquel vous vous connectez avec la ligne X11Forwarding yes dans le fichier de configuration, /etc/ssh/sshd_config. Vous devez également l’activer sur le client en spécifiant l’option -X (c’est un X majuscule) dans votre commande ssh. Le Listing 8 compare ce qui se passe si j’utilise su - jane pour passer à l’utilisateur jane sur mon système, puis si j’utilise ssh -X jane@localhost. Dans les deux cas, je tente d’exécuter la commande xclock pour afficher une petite horloge sur mon écran.

Liste 8. Transfert X

DISPLAY est définie sur localhost:10.0. Le serveur sshd crée effectivement un serveur X pour vous sur le système cible. Vous ne voulez pas que cela interfère avec les serveurs X réels sur le système. Ainsi, le fichier de configuration, /etc/ssh/sshd_config, contient une ligne X11DisplayOffset 10 pour spécifier le décalage de départ (à partir de 0) pour les serveurs X sur ssh. La valeur par défaut est 10, ce qui est généralement suffisant pour une station de travail à un seul utilisateur, mais qui pourrait devoir être augmenté dans un système multi-utilisateurs. Une deuxième connexion ssh au serveur se verrait attribuer l’affichage 11 et ainsi de suite.

La deuxième méthode pour permettre à d’autres personnes de se connecter à un serveur X est la méthode Xauthority. Le fichier Xauthority contient les informations d’autorisation utilisées lorsque vous vous connectez à un serveur X. La variable d’environnement XAUTHORITY spécifie le nom du fichier actuellement utilisé, soit un fichier généré par le système tel que /run/user/1000/gdm/Xauthority sur mon système Ubuntu 18, soit votre propre fichier .Xauthority.

Utilisez la commande xauth pour lister, extraire ou fusionner dans de nouvelles autorités. Utilisez l’option -f pour spécifier un fichier Xauthority autre que celui de votre variable d’environnement XAUTHORITY. Vous pouvez spécifier les commandes xauth sur la ligne de commande, ou le lancer et utiliser les commandes depuis le programme. Le Listing 9 montre quelques exemples et extrait mon autorisation pour l’affichage :0 dans un fichier nommé auth-ian.

Listing 9. Extraction des informations d’autorité à l’aide de xauth

XAUTHORITY. L’utilisateur jane peut alors afficher des applications sur mon écran.

Liste 10. Fusionner les informations d’autorité en utilisant xauth

xhost. Sur une station de travail, vous pouvez très bien l’utiliser pour vous permettre d’ouvrir des programmes graphiques tout en fonctionnant comme un autre utilisateur. La commande xhost sans options affiche la liste de contrôle d’accès actuelle. Utilisez l’option + avec un nom pour autoriser des systèmes ou des utilisateurs supplémentaires. Le Listing 11 montre comment ajouter l’utilisateur john de mon système local à la liste de contrôle d’accès, puis montre l’utilisateur john ouvrant le programme graphique xclock.

Listing 11. Utilisation de xhost pour activer un seul utilisateur local

xhost +local: comme indiqué dans le Listing 12. Notez les deux points ( 🙂 à la fin de local.

Liste 12. Utilisation de xhost pour activer tous les utilisateurs locaux non reliés au réseau

– au lieu de + pour supprimer les entrées que vous avez activées. Consultez les pages man ou info de xhost pour des options supplémentaires.

Pour la sécurité, vous devriez utiliser le tunnelage SSH ou éventuellement une autre solution telle que Virtual Network Computing (VNC) plutôt que xauth ou xhost. VNC sort du cadre de ce tutoriel mais offre de meilleures performances que le tunnelage SSH.

Quand les choses tournent mal

Avec autant de sources possibles d’informations de configuration X, vous devez savoir où chercher les informations de journal. Les erreurs liées à votre session X individuelle peuvent se trouver dans le fichier .xsession-errors ou éventuellement .xsession-errors-:0 dans votre répertoire personnel. Le suffixe :0 correspond aux erreurs de l’affichage :0.

Le journal X principal est situé dans /var/log. Le nom est généralement /var/log/Xorg.0.log, où 0 est votre numéro d’affichage. Le numéro sera différent si vous n’utilisez pas l’affichage :0.

Wayland, un nouveau gestionnaire de fenêtres de composition

Récemment, un nouveau serveur d’affichage et protocole de composition appelé Wayland a été développé. Dans ce modèle, les applications, créent elles-mêmes le contenu de leurs fenêtres dans un tampon hors écran. Le compositeur et le serveur sont intégrés. L’intention de Wayland est de fournir une solution plus simple et plus efficace que X. Wayland réutilise principalement les pilotes et l’infrastructure existants qui rendent le projet possible.

Contrairement à X, Wayland n’a pas une conception transparente au réseau. D’autres solutions telles que VNC peuvent être utilisées si l’affichage de fenêtres à distance est nécessaire.

Weston est un compositeur de référence implémentant Wayland. GNOME, KDE, Enlightenment, et plusieurs autres gestionnaires de fenêtres supportent maintenant Wayland. Des boîtes à outils telles que Qt 5 et GTK+ prennent également en charge Wayland. Au moment de la rédaction (décembre 2018), Fedora et Ubuntu sont tous deux livrés avec Wayland comme serveur d’affichage par défaut.

Le serveur Xorg comprend maintenant XWayland qui permet aux applications X existantes de fonctionner avec un compositeur Wayland.

La plupart des implémentations actuelles ont encore le choix d’exécuter soit X, soit Wayland pour chaque session. Voir la Figure 7 pour un exemple de la façon dont le greeter GMS vous permet de choisir un type de session. Sur Fedora, le défaut est d’exécuter GNOME sur Wayland.

Vous pouvez également vérifier au moment de l’exécution sans avoir à vous connecter. Si vous exécutez Wayland, la variable d’environnement WAYLAND_DISPLAY sera définie. Sur les systèmes utilisant systemd, vous pouvez utiliser la commande loginctl pour déterminer votre numéro de session de connexion, puis l’utiliser à nouveau pour déterminer votre type de session. La liste 13 montre ces outils, d’abord sur un système Fedora 28 utilisant Wayland et ensuite sur un système Ubuntu 18 utilisant Xorg.

Liste 13. Déterminer si vous utilisez X ou Wayland

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.