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.
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.
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:
xterm
.
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.
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.
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.
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
.
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.
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 xclock
et 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.
p.karatchentzeff@free.fr