[ précedent ] [ Résumé ] [ Copyright ] [ Table des matières ] [ suivant ]

Guide d'introduction à Debian GNU-Linux
Chapitre 11 Le système X Window


Le but de ce chapitre est de décrire l'interface graphique utilisateur du système X Window. Cela suppose que vous avez réussi à configurer X comme décrit dans le manuel d'installation (même si le manuel d'installation n'est pas encore écrit; vous aurez besoin d'utiliser le XFree86 HOWTO, le contenu de /usr/doc/X11 et ce chapitre). Une fois X installé, vous pouvez entrer dans l'environnement X soit en tapant startx soit via xdm: cela dépend de vos choix pendant la configuration.


11.1 Introduction à X

Une GUI (Graphical User Interface, une interface graphique utilisateur) fait partie des systèmes Windows et de MacOS. Il est pratiquement impossible d'écrire une application pour ces systèmes sans utiliser ces GUI et les systèmes ne peuvent être utilisés à l'aide de lignes de commandes. GNU-Linux est plus modulaire car il est composé de petits composants indépendants que l'on peut ou non utiliser suivant ses besoins ou ses préférences. Un des ces composants est le système X Window, que l'on appelle simplement X.

Ce composant est aussi appelé parfois X11. Remarquez bien que l'appellation « X Windows » est incorrecte.

X en lui-même est une manière pour les programmes de discuter avec la souris et la carte vidéo sans savoir quel type de matériel il y a au bout. En fait, c'est une abstraction du matériel graphique. Les applications des utilisateurs parlent au serveur X dans le langage du serveur X, le serveur X le traduisant alors dans le langage de votre matériel. Cela signifie que votre programme n'a qu'à être écrit une fois et qu'ensuite il tournera sur tous les ordinateurs.

Dans le jargon de X, le programme qui parle au matériel est connu sous le vocable serveur X. Les applications qui demandent au serveur X d'afficher une fenêtre sur l'écran sont appelés clients X. Le serveur X inclut un pilote pour la carte vidéo et donc vous devez avoir un serveur X qui reconnaît votre carte vidéo.

Le serveur X ne fournit aucune fonctionnalité que l'on peut attendre d'une GUI, comme redimensionner une fenêtre ou bien les réarranger. Un client X spécial, appelé le gestionnaire de fenêtres, dessine les bords des fenêtres et les barres de titre, redimensionne et réarrange les fenêtres et fournit des facilités pour lancer d'autres clients X via un menu. Des gestionnaires de fenêtres spécifiques peuvent avoir d'autres fonctionnalités.

Les gestionnaires de fenêtres présents dans un système Debian sont fvwm, fvwm2, icewm, afterstep, olvwm, wmaker, twm et enlightenment. Vous devrez probablement tous les essayer avant de ne garder que votre favori.

Ni le serveur X, ni le gestionnaire de fenêtres ne fournissent de gestionnaire de fichiers, c'est-à-dire qu'il n'existe pas de fenêtres contenant les icônes de vos fichiers et répertoires. Vous pouvez lancer un gestionnaire de fichiers en tant qu'application séparée, et il y en a de nombreux de disponibles. Le projet de bureau GNOME se développe autour d'un gestionnaire de fichiers basé sur des icônes et sur d'autres fonctionnalités basées sur des GUI. Allez voir la page GNOME[47] pour obtenir les dernières nouvelles.

La dernière fonctionnalité de X est sa transparence au réseau: cela signifie que les clients X ne s'occupent pas de savoir s'ils discutent avec un serveur X tournant sur la même machine qu'eux ou sur un serveur X fonctionnant quelque part sur le réseau. De façon pratique, cela veut dire que vous pouvez faire tourner à distance votre programme sur une autre machine très puissante et sortir l'affichage sur votre machine.


11.2 Lancer l'environnement X

Il y a deux façons de lancer X. La première est de le lancer manuellement aussitôt que vous en avez besoin. Pour ce faire, Loguez-vous dans une console et tapez startx. Cela lance X et vous met automatiquement sur sa console virtuelle.

La seconde façon (et recommandée) de lancer X est d'utiliser xdm (X display manager, le gestionnaire d'affichage graphique). Basiquement, xdm vous propose un joli prompteur graphique de login sur la console virtuelle de X (probablement la 7) et vous pouvez vous loguer à partir de là.

Par défaut, n'importe quelle méthode lancera aussi une xterm qui est une petite fenêtre contenant un prompteur de shell. À partir de ce prompteur, vous pouvez taper n'importe quelles commandes comme vous le faisiez sur une console texte. Vous pouvez ainsi refaire tous les exemples du livre en utilisant l'xterm. La seule différence entre une xterm et la console texte est qu'il n'est pas nécessaire de se loguer dans l'xterm puisque vous l'êtes déjà sous X.

Il y a d'autre part beaucoup de choses que vous ne pouvez faire que sous X et dont on va parler dans ce chapitre.

Attention: la fenêtre par défaut de l'xterm a une toute petite fonte. Si vous avez un tout petit moniteur ou une définition élevée ou bien encore de mauvais yeux, il se peut que vous vouliez changer cet état de fait. Pour ce faire, effectuez les étapes suivantes:


11.3 Les opérations élémentaires sous X

Il y a certaines opérations très communes sous X avec lesquelles il va falloir vous familiariser. Cette partie décrit quelques opérations élémentaires que vous pouvez trouver très pratiques.


11.3.1 La souris

La souris sous X fonctionne presque de la même façon que sous les autres systèmes d'exploitation à l'exception du fait qu'elle possède trois boutons. Si votre souris n'en possède que deux, vous pouvez simuler le troisième bouton du milieu en appuyant sur les deux boutons simultanément. Ce n'est pas très pratique; donc investir dans une souris trois boutons bon marché n'est pas une mauvaise idée. Il y en a de disponible chez tous les détaillants informatiques.

Les boutons sont numérotés de gauche à droite, en supposant que vous placiez votre souris dans votre main droite. Le premier bouton est alors sur la gauche, le deuxième au milieu et le troisième sur la droite. Vous pouvez rencontrer soit la numérotation soit les positions dans la documentation.

X possède une fonctionnalité interne simple de copier-coller. Pour sélectionner le texte à copier, vous devez à cliquer puis à déplacer la souris avec le bouton gauche. Cela devrait sélectionner le texte à copier, en supposant bien sûr que l'application en question supporte le copier-coller. Pour restituer le texte, vous n'avez qu'à cliquer avec le bouton du milieu dans une autre application X. Par exemple, vous recevez un courriel contenant une URL. Vous pouvez la sélectionner avec le bouton gauche et ensuite cliquer dans le champ ad hoc de votre butineur avec le bouton du milieu pour la recopier.


11.3.2 Les clients X

Les programmes communiquant avec le serveur X sont appelés des clients X. La plupart de ces programmes lui demandent d'afficher une fenêtre à l'écran.

Vous pouvez lancer un client X de la même façon que vous lancez un autre programme Debian. Tapez simplement le nom du programme en ligne de commandes. Essayez de taper xterm dans la fenêtre xterm déjà existante et vous aurez une nouvelle fenêtre xterm qui apparaîtra à l'écran.

Vous devez vous apercevoir que la première xterm est bloquée car le shell attend que la seconde xterm se finisse. Pour éviter ce problème, vous devez lancer le client X en arrière-plan, en utilisant le & après le nom de la commande, comme ceci: xterm &. Si vous oubliez, vous pouvez lancer un processus déjà existant en arrière-plan: commencez par le suspendre avec Ctrl-z et ensuite placez-le en arrière-plan avec la commande bg.

Si vous utilisez régulièrement un programme, votre gestionnaire de fenêtres doit vous fournir un moyen plus pratique de le lancer via un menu graphique.


11.3.3 Problèmes

Parfois, lorsque vous lancez un client X à partir d'un menu graphique, vous n'arrivez pas à voir les messages d'erreurs en cas d'échec. Vous pouvez les trouver dans le fichier ~/.xsession-errors.


11.3.4 Quitter l'environnement X

Pour sortir de X, il est nécessaire d'utiliser un menu. Malheureusement pour les débutants, cela change avec chaque gestionnaire de fenêtres et pour la plupart d'entre eux, cela peut être fait de nombreuses façons différentes. S'il existe un menu évident, rechercher une entrée du style Exit (quitter) ou bien Close the Window Manager (Fermer le gestionnaire de fenêtres). Si vous n'apercevez aucun menu, essayez de cliquer avec chacun des boutons sur l'arrière-plan de l'écran. Si tout cela a échoué, vous pouvez toujours tuer le serveur X en pressant sur la combinaison Ctrl-Alt-Backspace. Bien entendu, tuer le serveur vous fait perdre toutes les données non sauvegardées des applications encore ouvertes.


11.3.5 Personnaliser le lancement de X

Lorsque vous lancez X, Debian exécute quelques scripts shell qui lancent votre gestionnaire de fenêtres et d'autres clients X. Par défaut, il y a un gestionnaire de fenêtres, un xconsole et une xterm.

Pour personnaliser votre lancement de X, le fichier /etc/X11/config doit contenir la ligne allow-user-xsession. Si ce n'est pas le cas, loguez-vous en root et ajoutez la maintenant. Ensuite reloguez en tant que vous-même et continuez cette présentation.

Vous pouvez voir ce que fait Debian au lancement de X dans le fichier /etc/X11/Xsession. Remarquez bien que vous pouvez changer le comportement de /ect/X11/Xsession en modifiant le fichier /ect/X11/config qui spécifie les caractéristiques du système par défaut.

Pour lancer les clients de votre choix au démarrage de X, vous devez créer un fichier script exécutable appelé .xsession dans votre répertoire personnel.

     $ touch ~/.xession

pour le créer et

     $ chmod u+x ~/.xsession

pour le rendre exécutable.

Une fois que .xession est créé, il est nécessaire de le modifier pour pouvoir faire quelque chose d'utile avec votre éditeur de textes favori. Vous pouvez faire ce que vous voulez dans ce script. Dans tous les cas, lorsque les processus du script s'arrêteront, la session X aussi s'arrêtera.

De façon pratique, cela signifie que vous devez toujours terminer vos scripts avec un appel à exec. Quelque soit le programme que vous appelez avec exec, il remplacera le processus en cours par ce programme et ainsi les commandes suivantes après la ligne exec seront ignorées. Le programme que vous appellerez via exec deviendra le nouveau propriétaire du processus de script, ce qui signifie que X s'arrêtera lorsque le nouveau programme s'arrêtera.

Mettez par exemple à la fin de votre .xsession une ligne avec exec fvwm. Cela signifie que le gestionnaire de fenêtres fvwm sera lancé au démarrage de X. Lorsque vous quitterez votre gestionnaire de fenêtres fvwm, vous quitterez aussi la session X et tous les autres clients seront fermés. Il n'est pas absolument nécessaire de lancer un gestionnaire de fenêtres ici; vous pouvez y écrire exec xterm et dans ce cas, tapez exit dans cette xterm particulière fermera toute la session X.

Si vous désirez lancer d'autres clients avant votre exec, il sera nécessaire de les lancer en arrière-plan. Sinon, .xsession s'arrêtera jusqu'à ce que chaque client existant disparaisse, et ainsi de suite, ligne après ligne. Voyez la partie précédente pour envoyer un processus en arrière-plan (basiquement, vous devez ajouter un & à la fin de la ligne, comme pour xterm&).

Vous pouvez tirer parti de ceci. Si vous désirez lancer des commandes à la fin de votre session X, vous pouvez lancer votre gestionnaire de fenêtres, ou quoi que ce soit d'autre équivalent, dans votre .xsession et attendre qu'il finisse. Pour ce faire, n'utilisez pas exec ni les &. Entrez simplement fvwm. Ensuite, placez les commandes de votre choix après fvwm.

Quelques exemples de fichiers .xession devraient vous aider. Dans les exemples, remplacez fvwm par le gestionnaire de fenêtres de votre choix.

Le plus simple des .xsession est celui qui ne fait que lancer un gestionnaire de fenêtres:

     exec fvwm

Cela lance fvwm et la session X s'achève lorsque l'on quitte fvwm. Si vous faîtes la même chose mais sans le exec, rien ne semblera différent à première vue. Mais en arrière-plan, .xsession sera en attente des réactions de fvwm et .xsession ne s'arrêtera qu'à la fin de fvwm. Utilisez exec est plus léger car fvwm remplace alors .xsession plutôt que d'attendre qu'il s'arrête. Vous pouvez le vérifier à l'aide des commandes ps ou top.

Un fichier .xsession plus complet lance quelques clients X avant de lancer le gestionnaire de fenêtres. Par exemple, vous pouvez avoir envie d'avoir des xterm et un xclock après le démarrage de X. Pas de problème: entrez simplement xterm& xterm& xclock& exec fvwm. Deux xterms se lanceront au démarrage en arrière-plan, ainsi qu'un xclock et ensuite le gestionnaire de fenêtres sera lancé. Lorsque vous quittez le gestionnaire de fenêtres, vous quitterez aussi X.

Vous pouvez essayer sans la mise en arrière-plan pour voir ce qui se passe. Entrez la commande: xterm xclock exec fvwm. xterm se lance, et attend que vous en sortiez. Ensuite, xclock se lance. Vous devez quitter xclock pour lancer fvwm. Les commandes sont lancées séquentiellement car le script attend que chacune d'entre elles se finisse avant passer à la suivante.

Vous pouvez utiliser le caractère séquentiel de cette exécution à votre avantage. Peut-être avez-vous envie de garder chaque jour une trace de l'heure de votre arrêt de travail :

     xterm&
     xclock&
     fvwm
     date >> ~/heures-de-sortie

Cela va mettre en arrière-plan xterm et xclock et lancer fvwm et attendre qu'il finisse. À la sortie de fvwm, cela exécutera la dernière ligne, qui extrait la date courante et l'envoie dans le fichier ~/heures-de-sortie.

Pour finir, vous pouvez avoir un programme autre qu'un gestionnaire de fenêtres pour déterminer la sortie du serveur X:

     xclock&
     fvwm&
     exec xterm

Ce script va envoyer xclocket fvwm en arrière-plan et se remplacer par xterm. Lorsque vous quittez cette xterm, votre session X s'arrête.

La meilleure façon d'apprendre comment fonctionne .xession est encore de l'essayer. N'oubliez pas de le rendre rendre exécutable: l'oublier est une erreur très classique.


[ précedent ] [ Résumé ] [ Copyright ] [ Table des matières ] [ suivant ]
Guide d'introduction à Debian GNU-Linux
Traduction du document du 2 octobre 2000
John Goerzen et Ossama Othman
Traduction française de Patrice Karatchentzeff p.karatchentzeff@free.fr