[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

debian-guide_fr-1.0_chap11.sgml



<chapt> Le système X Window

<p>
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 <prgn>/usr/doc/X11</prgn> et ce
chapitre). Une fois X installé, vous pouvez entrer dans
l'environnement X en tapant soit <prgn>startx</prgn> soit via
<prgn>xdm</prgn>: cela dépend de vos choix pendant la configuration.

<sect> Introduction à X

<p>
Une <prgn>GUI</prgn> (<em>Graphical User Interface</em>, une
interface graphique utilisateur) est une partie et un composant 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.

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

<p>
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 <em>abstraction</em> 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.

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

<p>
Le serveur X ne fournit aucune fonctionnalité que l'on peut attendre
d'une <em>GUI</em>, comme redimmensionner une fenêtre ou bien les réarranger. Un
client X spécial, appelé le <em>gestionnaire de fenêtres</em>, 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.

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

<p>
Ni le serveur X, ni le gestionnaire de fenêtres ne fournissent de
<em>gestionnaire de fichiers</em>, 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 autours d'un gestionnaire de fichiers basé sur des
icônes et sur d'autres fonctionnalités basées sur des
<em>GUI</em>. Allez voir la page
GNOME<footnote>http://www.gnome.org/</footnote> pour obtenir les
dernières nouvelles.

<p>
La dernière fonctionnalité de X est sa <em>transparence au
réseau</em>: 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.
</sect>

<sect> Lancer l'environnement X

<p>
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 <prgn>startx</prgn>. Cela lance
X et vous met automatiquement sur sa console virtuelle.

<p>
La seconde façon (et recommandée) de lancer X est d'utiliser
<prgn>xdm</prgn> (<em>X display manager</em>, le gestionnaire
d'affichage graphique). Basiquement, <prgn>xdm</prgn> 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à.

<p>
Par défaut, n'importe quelle méthode lancera aussi une
<prgn>xterm</prgn> 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'<prgn>xterm</prgn>. La seule différence entre une <prgn>xterm</prgn>
et la console texte est qu'il n'est pas nécessaire de se loguer dans
l'<prgn>xterm</prgn> puisque vous l'êtes déjà sous X.

<p>
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.

<p>
<em>Attention: la fenêtre par défaut de l'<prgn>xterm</prgn> a une
toute petite fonte. Si vous avez un tout petit moniteur ou une
résolution é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:</em>

<p>
<list>
<item>
  Déplacez le curseur de la souris au centre de la fenêtre
  <prgn>xterm</prgn>.
<item>
  Appuyez sur la touche <em>Control</em> et le bouton droit de la
  souris simultanément. Vous devriez voir apparaître un menu de
  fontes.
<item>
  Pointez sur la fonte que vous voulez et relachez le bouton de la
  souris.
</list>
</sect>

<sect> Les opérations de base sous X

<p>
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 de
base que vous pouvez trouver très pratiques.

<sect1> La souris

<p>
La souris sous X fonctionne quasiment pareil 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 disponilble chez tous les détaillants informatiques.

<p>
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 cette numérotation des boutons dans la
documentation.

<p>
X possède une fonctionnalité interne simple de copier-coller. Pour
sélectionner le texte à copier, vous avez à 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
<em>had hoc</em> de votre butineur avec le bouton du milieu pour la
recopier.
</sect1>

<sect1> Les clients X

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

<p>
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 <prgn>xterm</prgn> dans la fenêtre
<prgn>xterm</prgn> déjà existante et vous aurez une nouvelle fenêtre
<prgn>xterm</prgn> qui apparaîtra à l'écran.

<p>
Vous devez vous apercevoir que la première <prgn>xterm</prgn> est
bloquée car le shell attend que la seconde <prgn>xterm</prgn> 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: <prgn>xterm &</prgn>. Si vous oubliez, vous pouvez lancer un
processus déjà existant en arrière-plan: commencez par le suspendre
avec <em>Ctrl-z</em> et ensuite placez-le en arrière-plan avec la
commande <prgn>bg</prgn>.

<p>
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.
</sect1>

<sect1> Problèmes

<p>
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 <prgn>~/.xsession-errors</prgn>.
</sect1>

<sect1> Quitter l'environnement X

<p>
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 <em>Exit</em> (quitter) ou
bien <em>Close the Window Manager</em> (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 <em>Ctrl-Alt-Backspace</em>. Bien-entendu, tuer le serveur
vous fait perdre toutes les données non sauvegardées des applications
encore ouvertes.
</sect1>

<sect1> Personnaliser le lancement de X

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

<p>
Pour personnaliser votre lancement de X, le fichier
<prgn>/etc/X11/config</prgn> doit contenir la ligne
<prgn>allow-user-xsession</prgn>. 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 le tutorial.

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

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

<p>
<example>
$ touch ~/.xession
</example>

<p>
pour le créer et

<p>
<example>
$ chmod u+x ~/.xsession
</example>

<p>
pour le rendre exécutable.

<p>
Une fois que <prgn>.xession</prgn> est créé, il est nécessaire de
l'éditer 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.

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

<p>
Mettez par exemple à la fin de votre <prgn>.xsession</prgn> une ligne
avec <prgn>exec fvwm</prgn>. Cela signifie que le gestionnaire de
fenêtres <prgn>fvwm</prgn> sera lancer au démarrage de X. Lorsque vous
quitterez votre gestionnaire de fenêtres <prgn>fvwm</prgn>, 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 <prgn>exec xterm</prgn> et dans
ce cas, tapez <prgn>exit</prgn> dans cette <prgn>xterm</prgn>
particulière fermera toute la session X.

<p>
Si vous désirez lancer d'autres clients avant votre <prgn>exec</prgn>,
il sera nécessaire de les lancer en arrière-plan. Sinon,
<prgn>.xsession</prgn> 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
<prgn>xterm&</prgn>).

<p>
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
<prgn>.xsession</prgn> et attendre qu'il finisse. Pour ce faire,
n'utilisez pas <prgn>exec</prgn> ni les &. Entrez simplement
<prgn>fvwm</prgn>. Ensuite, placez les commandes de votre choix après
<prgn>fvwm</prgn>.

<p>
Cela devrait vous aider un peu si vous pouviez jeter un oeil sur des
exemples de fichiers <prgn>.xession</prgn>. Dans tous les exemples,
remplacez <prgn>fvwm</prgn> par le gestionnaire de fenêtres de votre
choix.

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

<p>
<example>
exec fvwm
</example>

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

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

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

<p>
Vous pouvez utiliser cette exécution séquentielle à votre
avantage. Peut-être avez-vous envie de garder une trace de l'heure de
votre arrêt de travail chaque jour:

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

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

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

<p>
<example>
xclock&
fvwm&
exec xterm
</example>
 
<p>
Ce script va envoyer <prgn>xclock</prgn>et <prgn>fvwm</prgn> en
arrière-plan et se remplacer par <prgn>xterm</prgn>. Lorsque vous
quittez cette <prgn>xterm</prgn>, votre session X s'arrête.

<p>
La meilleure façon d'apprendre comment fonctionne
<prgn>.xession</prgn> est encore de l'essayer. Assurez-vous bien de
l'avoir rendu exécutable: l'oublier est une erreur très classique.
</sect1>
</sect>

</chapt>
-- 
      |\      _,,,---,,_       Patrice KARATCHENTZEFF  
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:pkarat@club-internet.fr 
     |,4-  ) )-,_. ,\ (  `'-'         p.karatchentzeff@free.fr
    '---''(_/--'  `-'\_)





Reply to: