Le Guide du ROOTard pour Linux: X Window
Description: Ce document regroupe l'adaptation d'articles parus dans la Linux-Gazette. Merci à Nat Makarévitch pour ses relectures et Joël Bernier pour la mise en page HTML.
Keywords: Linux, francais, français, france, GNU, FSF, Debian, Redhat, Slackware, Mandrake, kheops, document, documentation, logiciel, libre, informatique, free, software, open, source, sourceware, freeware, soleil, support, assistance, hot line

> Page suivante Page précédente Table des matières ## 9. X Window Maintenant que tout fonctionne bien, on passe à un autre gros morceau : l'installation de X Window. Pour pouvoir utiliser X Window, il faut posséder une configuration raisonnable (au moins 8Mo de mémoire). Dans le cas contraire, la machine sera très lente : elle va passer son temps à swapper. Dans un premier temps, installez à l'aide de votre distribution le serveur correspondant à la carte graphique. ## 9.1 XF86Config Le problème avec X Window, c'est de configurer le fichier `XF86Config`. Il s'agit ici du serveur XFree86 3.2, basé sur X11R6. Avant de commencer à construire votre fichier, lancez le programme `SuperProbe`. Dans mon cas, cela me permet d'obtenir les renseignements suivants (oui, je sais, c'est une vieille carte vidéo... mais bon, on fait avec les moyens du bord !) :
>     First video: Super-VGA
>             Chipset: Cirrus CL-GD5428
>             Memory:  1024 Kbytes
>             RAMDAC:  Cirrus Logic Built-in 15/16/24-bit DAC
>                      (with 6-bit wide lookup tables (or in 6-bit mode))
> - Ensuite, le plus dur reste à faire : construire le fichier de configuration. Attention : dans certaines distributions, le fichier `XF86config` est placé dans le répertoire `/etc/X11`, ce qui est une bonne idée dans le cas d'un réseau de stations Linux partageant `/usr` par NFS. Si vous utilisez une ou plusieurs machines indépendantes, vous pouvez supprimer `/etc/X11/XF86config` et utiliser `/usr/X11R6/lib/X11/XF86Config`. Les nouvelles versions de distributions sont livrées avec certains outils permettant d'automatiser l'installation et la configuration du serveur. Essayez dans un premier temps avec cet outil : il est fort probable que cela fonctionne directement. Ce fichier se présente sous la forme de sections. En voici une description : Fichiers
>       Section "Files"

>           RgbPath     "/usr/X11R6/lib/X11/rgb"

>           FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
>           FontPath    "/usr/X11R6/lib/X11/fonts/Type1/"
>           FontPath    "/usr/X11R6/lib/X11/fonts/Speedo/"
>           FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/"
>           FontPath    "/usr/X11R6/lib/X11/fonts/100dpi/"
>           FontPath    "/usr/X11R6/lib/X11/fonts/xtel/"
>       EndSection
> - Dans cette section, il n'y a pas grand chose à modifier. Ajoutez ou supprimez les chemins des polices de caractères, et la liste des couleurs RGB. Options pour le serveur :
>       Section "ServerFlags"
>       EndSection
> - Pour ma part, elle est vide... Clavier
>       Section "Keyboard"
>           Protocol    "Standard"
>       #    AutoRepeat  500 5
>           ServerNumLock

>       # Pour cela, voir plus bas
>           LeftAlt     Meta
>           RightAlt    ModeShift
>           # RightCtl    Compose
>           ScrollLock  ModeLock
> - La souris :
>       Section "Pointer"
>       # pour le protocole, utilise MouseMan, MouseSystems, Logitech ou Microsoft
>           Protocol    "MouseMan"

>       # Peripherique a utiliser
>           Device      "/dev/mouse"
>           BaudRate    1200

>       # Emulation 3 boutons : le click sur les 2 boutons
>       # simulent le bouton du milieu... pour les souris a deux boutons.
>       Emulate3Buttons

>       # ChordMiddle is an option for some 3-button Logitech mice
>       #    ChordMiddle
>       EndSection
> - Le moniteur. Il s'agit de détailler les caractéristiques du moniteur. Voici celui qui occupe mon bureau :-). Les fichiers situés dans le répertoire `doc` contiennent les caractéristiques de tout un tas d'écrans. Il est fort possible que vous y trouviez votre bonheur.
>       Section "Monitor"
>           Identifier  "Sync3N"
>           VendorName  "Samsung"
>           ModelName   "3N"

>           # Frequences :
>           Bandwidth   25.2
>           HorizSync   31.5-80
>           VertRefresh 60-90

>           # Les modes dans lesquels l'ecran peut fonctionner
>           Modeline "800x600"   40 800 840 968 1056 600 601 605 628
>           Modeline "640x480"   25.175 640  664  760  800   480 491  493  525
>           Modeline "1024x768i" 45 1024 1040 1216 1264 768 768 778 819 interlace
>           Modeline "1024x768"  75 1024 1048 1184 1328 768 771 777 806
>       EndSection
> - la carte graphique.
>       Section "Device"
>           # Baratin
>           Identifier  "CartePerso"
>           VendorName  "Cirrus"

>           # Nom de la carte
>           BoardName   "clgd5428"

>           #memoire video
>           VideoRam    1024

>           # nom du chip
>           Chipset     "clgd5428"

>           # clocks d'horloges.
>           Clocks  25.23  28.32  41.16  36.08  31.50  39.99  45.08  49.87
>           Clocks  64.98  72.16  75.00  80.01  85.23
>       EndSection
> - Enfin, on réunit tout : la section écran :
>       Section "Screen"
>           Driver      "svga"

>           # References aux autres sections.
>           Device      "CartePerso"
>           Monitor     "Sync3N"

>           # Le display utilise
>           Subsection "Display"
>               Depth       8             # 256 couleurs max

>               # Modes par priorite : de gauche a droite
>               Modes       "1024x768" "800x600" "640x480"
>               ViewPort    0 0
>               # Resolution virtuelle
>               Virtual     1024 768
>               option   "linear"
>           EndSubsection
>       EndSection
>   Si votre carte le permet, vous pouvez ajouter d'autres sous-sections pour le display :
>       Subsection "Display"
>               Depth       32
>               Modes       "640x480"
>               ViewPort    0 0
>               Virtual     800 600
>       EndSubsection
> Dans ce cas, le serveur fonctionnera en 16 millions de couleurs. La configuration du serveur X est soit très rapide (marche tout de suite), soit très longue. Dans le deuxième cas, voici quelques conseils : lire la documentation se trouvant dans `./doc`. Un bon nombre d'écrans et de cartes sont décrites avec les horloges à utiliser. commencer avec une résolution faible (640x480) : c'est plus simple ; si vous avez besoin des clocks de la carte, lancez `X -probeonly 2>/tmp/err` (si vous utilisez comme interpréteur de commandes `csh` ou `tcsh`, remplacez `2>` par `>&`. Dans le fichier `/tmp/err` vont se trouver tous les messages du serveur, dont le chip de la carte ainsi que ses clocks. La seule chose qu'il va rester à configurer, c'est l'écran. lire le "Video HOWTO", écrit par J.M. Vansteene et disponible sur `ftp.lip6.fr` dans le répertoire `/pub/linux/french/docs/HOWTO` ; utiliser le programme `xvidtune` : il permet "d'affiner" la mise au point de l'image (centrage, etc). Par exemple, j'avais un certain tremblement à l'image : avec ce programme, j'ai pu résoudre le problème. Si jamais l'anglais vous rebute, vous pouvez lire une version française de toute la documentation XFree86 3.2, au format HTML. Pour cela, allez sur le serveur http://www.kheops.com/. ## 9.2 Clavier français sous X : Xmodmap Note: les utilisateurs de clavier de type suisse-romand seront heureux d'aller consulter la documentation qui se trouve à l'adresse http://dmawww.epfl.ch/roso.mosaic/jaf/linux/clavierromand.html. Divers autres types de claviers pour francophones sont décrits par ailleurs. On passe maintenant au clavier français sous X Window. Comme XFree86 a été conçu par des gens se servant de claviers américains (qwertyiop), la configuration du clavier peut sembler être assez affolante. Je vous conseille de suivre ce qui suit... Tout d'abord, vous devez avoir dans le fichier XF86Config les options suivantes :
>         LeftAlt     Meta
>         RightAlt    ModeShift
>         # RightCtl    Compose
>         ScrollLock  ModeLock
> Ensuite, placez le fichier suivant dans le répertoire `/usr/X11R6/lib/X11/xinit`. Il doit s'appeler `.Xmodmap`. Le fichier qui suit a été fait par René Cougnenc. A l'heure actuelle, c'est celui dont je me sers... et je pense qu'il est difficile de faire mieux. Il fonctionne sur XFree86 3.2.
>     ! clavier Français AZERTYUIOP pour XFree86 3.2
>     !
>     !
>     ! Les accents circonflexes des principales voyelles sont obtenus avec
>     ! la touche Mode_switch (ALT_GR).
>     !
>     ! Les tremas sont obtenus par ALT_GR + SHIFT, sur 'e', 'i', 'o', et 'u'.
>     !
>     ! Esperons qu'un jour on pourra obtenir le clavier Francais standard sur
>     ! lequel tout le monde apprend a taper...
>     ! -----------------------------------------------------------------------
>     !
>     keycode   9 = Escape
>     keycode  10 = ampersand 1
>     keycode  11 = eacute 2 asciitilde
>     keycode  12 = quotedbl 3 numbersign
>     keycode  13 = apostrophe 4 braceleft
>     keycode  14 = parenleft 5 bracketleft
>     keycode  15 = minus 6 bar
>     keycode  16 = egrave 7 grave
>     keycode  17 = underscore 8 backslash
>     keycode  18 = ccedilla 9 asciicircum
>     keycode  19 = agrave 0 at
>     keycode  20 = parenright degree bracketright
>     keycode  21 = equal plus braceright
>     keycode  22 = BackSpace
>     keycode  23 = Tab
>     keycode  24 = a A acircumflex
>     keycode  25 = Z
>     keycode  26 = e E ecircumflex ediaeresis
>     keycode  27 = R
>     keycode  28 = T
>     keycode  29 = Y
>     keycode  30 = u U ucircumflex udiaeresis
>     keycode  31 = i I icircumflex idiaeresis
>     keycode  32 = o O ocircumflex
>     keycode  33 = P
>     keycode  34 =  dead_circumflex dead_diaeresis
>     keycode  35 = dollar sterling
>     keycode  36 = Return
>     keycode  37 = Control_L
>     keycode  38 = Q
>     keycode  39 = S
>     keycode  40 = D
>     keycode  41 = F
>     keycode  42 = G
>     keycode  43 = H
>     keycode  44 = J
>     keycode  45 = K
>     keycode  46 = L
>     keycode  47 = M
>     keycode  48 = ugrave percent
>     keycode  49 = guillemotleft guillemotright
>     keycode  50 = Shift_L
>     keycode  51 = asterisk mu
>     keycode  52 = W
>     keycode  53 = X
>     keycode  54 = C
>     keycode  55 = V
>     keycode  56 = B
>     keycode  57 = N
>     keycode  58 = comma question
>     keycode  59 = semicolon period
>     keycode  60 = colon slash
>     keycode  61 = exclam slash
>     keycode  62 = Shift_R
>     keycode  63 = asterisk
>     keycode  64 = Alt_L
>     keycode  65 = space
>     keycode  66 = Caps_Lock
>     keycode  67 = F1
>     keycode  68 = F2
>     keycode  69 = F3
>     keycode  70 = F4
>     keycode  71 = F5
>     keycode  72 = F6
>     keycode  73 = F7
>     keycode  74 = F8
>     keycode  75 = F9
>     keycode  76 = F10
>     keycode  77 = Num_Lock
>     keycode  78 = Scroll_Lock
>     keycode  79 = 7
>     keycode  80 = 8
>     keycode  81 = 9
>     keycode  82 = KP_Subtract
>     keycode  83 = 4
>     keycode  84 = 5
>     keycode  85 = 6
>     keycode  86 = KP_Add
>     keycode  87 = 1
>     keycode  88 = 2
>     keycode  89 = 3
>     keycode  90 = 0
>     keycode  91 = period
>     keycode  92 = 0x1007ff00
>     keycode  93 =
>     keycode  94 = less greater
>     keycode  95 = F11
>     keycode  96 = F12
>     keycode  97 = Home
>     keycode  98 = Up
>     keycode  99 = Prior
>     keycode 100 = Left
>     keycode 101 = Begin
>     keycode 102 = Right
>     keycode 103 = End
>     keycode 104 = Down
>     keycode 105 = Next
>     keycode 106 = Insert
>     keycode 107 = Delete
>     keycode 108 = KP_Enter
>     keycode 109 = Control_R
>     keycode 110 = Pause
>     keycode 111 = Print
>     keycode 112 = KP_Divide
>     keycode 113 = Mode_switch
>     keycode 114 = Break

>     ! Nouvelles valeurs pour le pave numerique a partir de XFree86 3.1.1
>     !keycode 147 = Home
>     !keycode 148 = Up
>     !keycode 149 = Prior
>     !keycode 150 = Left
>     !keycode 152 = Right
>     !keycode 153 = End
>     !keycode 154 = Down
>     !keycode 155 = Next
>     !keycode 156 = Insert
>     !keycode 157 = Delete

>     !keycode  136 = 7
>     !keycode  137 = 8
>     !keycode  138 = 9
>     keycode  82 = KP_Subtract
>     !keycode  139 = 4
>     !keycode  140 = 5
>     !keycode  141 = 6
>     !keycode  86 = KP_Add
>     !keycode  142 = 1
>     !keycode  143 = 2
>     !keycode  144 = 3
>     !keycode  145 = 0
>     !keycode  146 = period
>     ! -----------------------------------------------------------------------
> Les caractères "et " sont obtenus respectivement en appuyant sur la touche où il y a un petit deux (en haut à gauche, sous "Échappement") pour "et Shift + deux pour ". ## 9.3 Clavier français sous X... 2ième possibilité Rq: personnellement, j'utilise la première solution sans aucun problème... Si jamais vous avez trop de problèmes, essayez celle-ci. Cette solution nous vient de Michel Billaud. Bon, on part de la constatation que les touches accent-grave (ALT-4) et accent-aigu (ALT 7) sont pénibles à utiliser : si elles sont muettes il faut les doubler la plupart du temps, si elles ne le sont pas on ne peut pas accentuer les E A U etc. Donc, il faut que ALT 4 et ALT 7 produisent de vrais accents aigus et apostrophe. Il nous faut quand même des touches muettes (en plus). Il va falloir modifier la "map" du clavier. On va donc faire : ALT 4 = accent aigu en dur ALT 7 = accent grave en dur ALT 9 = circonflexe en dur ALT ^ = accent aigu ALT ù = accent grave Dans le répertoire `/usr/lib/kbd/keytables.map`, copier `fr-lat1.map` sous un autre nom (comme par exemple `monclavier.map`). Lancer `showkey` pour voir le numéro des touches concernées dans l'ordre : 5 8 10 26 et 40. Puis éditer `monclavier.map` pour faire les modifications. Pour tester, faire `loadkeys monclavier`. Lorsque tout semble fonctionner, modifier `/etc/rc.d/rc.keymap` pour qu'il charge monclavier.map et gribouiller le clavier avec un crayon, pas un feutre... :-). On peut aussi mettre un "tilde muet" sur le 2 supérieur et un "tilde dur" (indispensable au shelliste) sur ALT-2. ## 9.4 Clavier français sous X... utiliser xkb Il est nécessaire d'utiliser un serveur X assez récent pour mettre en place cela (XFree86 3.2 minimum). Dans la section "Keyboard" du fichier de configuration, ajouter :
>        XkbKeycodes     "xfree86"
>        XkbTypes        "default"
>        XkbCompat       "default"
>        XkbSymbols      "us(pc101)"
>        XkbGeometry     "pc"
>        XkbRules        "xfree86"
>        XkbModel        "pc102"
>        XkbLayout       "fr"
> Si le clavier n'offre pas 101 touches il faudra remplacer le "102" par "101", "pc102", "104" ou "105" afin de pouvoir d'utiliser les touches spéciales (MS-Windows). Pour plus d'informations, regardez le contenu du répertoire `/usr/X11R6/lib/X11/xkb`. ## 9.5 xdm Pour démarrer X Window directement au boot (`xdm`, vous pouvez modifier le fichier `/etc/inittab` en changeant la ligne contenant `initdefault`. Par exemple sur ma machine, il suffit de remplacer
>     id:5:initdefault:
>     #id:6:initdefault:
> par
>     #id:5:initdefault:
>     id:6:initdefault:
> Mais attention ! Certaines distributions, dont la Red Hat et la Debian, utilisent le niveau 6 pour réamorcer, celles-ci utilisent le niveau 5 pour lancer `xdm`. Le plus simple est de regarder dans le fichier `/etc/inittab` : celui-ci contient généralement une description des niveaux d'exécution et de ce à quoi ils correspondent. Pour lancer `xdm` en 16 ou 32 bits, il faut modifier le fichier `/usr/X11/lib/X11/xdm` et mettre :
>     :0 local /usr/X11/bin/X -bpp 16 (ou 32)
> ## 9.6 Comment démarrer plusieurs sessions X ? Afin de pouvoir démarrer plusieurs sessions X sur différentes consoles sans avoir à spécifier le "display" à utiliser, ajoutez à la fin du fichier startx :
>     CONSOLE=`tty`
>     CONSOLE=`basename $CONSOLE`
>     CONSOLE=`echo $CONSOLE | sed s/tty//`
>     CONSOLE=`expr $CONSOLE - 1`

>     echo "Starting X on display "$CONSOLE

>     exec xinit $clientargs -- $serverargs :$CONSOLE
> On également utiliser la solution suivante qui a pour avantage d'utiliser la première console libre :
>     for AFFICHAGE in 0 1 2 3 4 5;
>     do
>         if [ ! -f /tmp/.X$AFFICHAGE-lock ];
>         then
>            exec xinit $clientargs -- $serverargs :$AFFICHAGE >/dev/console 2>&1
>            exit
>          fi
>     done
> ## 9.7 Comment récupérer les erreurs sur la console ? Il arrive fréquemment que les erreurs se trouvent dans la fenêtre texte virtuelle à partir de laquelle vous avez lancé le serveur. Une solution consiste à lancer le serveur de cette manière :
>     xinit > /dev/console 2>&1
> Si vous utilisez la Slackware, il suffit d'éditer le script `startx` et de remplacer la ligne
>     exec xinit $clientargs -- $serverargs
> par
>     exec xinit $clientargs -- $serverargs >/dev/console 2>&1
> ## 9.8 XFree86 et XInput À partir de la version XFree86 3.1.2B, le serveur X de XFree86 supporte l'extension XInput. Cette extension permet d'employer simultanément plusieurs périphériques d'entrée. Dans XFree86, il y a en a 3 pour l'instant : une tablette Wacom ou compatible avec le protocole wacom IV ; un écran tactile Elographics ; un joystick. Le support pour ces périphériques est chargé dynamiquement dans le serveur à partir de la version 3.1.2D en ajoutant les lignes suivantes au fichier XF86Config :
>     Section "Module"
>         Load "xf86Wacom.so"
>         Load "xf86Elo.so"
>         Load "xf86Jstk.so"
>     EndSection
> XFree86 cherche les modules dans un répertoire prédéfini : `/usr/X11R6/lib/modules` ou bien suivant un chemin spécifié dans la section `Files` :
>     Section "Files"
>         ModulePath  "/usr/X11R6/lib/,/usr/X11R6/lib/modules/"
>         ModulePath  "/usr/X11R6/bin"
>     EndSection
> Le ModulePath doit être specifié avant la section "Module" pour fonctionner. Chaque périphérique possède sa propre sous-section de configuration. Consulter la page de manuel de `XF86Config` pour avoir le détail. Un périphérique n'est activé que s'il possède une sous-section. L'exemple suivant active un joystick et une tablette :
>     Section "XInput"
>         SubSection "Joystick"
>             Port                    "/dev/js0"
>             Timeout                 20
>             MinimumXPosition        28
>             MaximumXPosition        1206
>             MinimumYPosition        27
>             MaximumYPosition        1239
>             Delta                   20
>         EndSubsection

>         SubSection "WacomStylus"
>             Port            "/dev/ttyS2"
>         EndSubsection
>     EndSection
> Ensuite le serveur peut émettre des évènements étendus ou bien basculer un périphérique en core pointer. Deux programmes existent pour manipuler les devices étendus : `xsetpointer` bascule un périphérique en core pointer ou liste les périphériques ; `xsetmode` passe un périphérique en absolu ou en relatif. On doit changer le mode d'un périphérique avant qu'il ne soit basculé en core pointer. ## 9.9 Problème assez courant Une question qui revient assez souvent : je ne sais pas pourquoi sous XFree86, de temps à autres je ne peux plus déplacer les fenêtres, n'ai plus accès aux boutons et aux menus déroulant (sauf ceux des fenêtres système) ? . La solution est très simple : déverrouiller Num Lock ! ## 9.10 Souris pour les gauchers Certains gauchers souhaitent inverser l'ordre des boutons. Pour cela, modifiez les fichiers `.xinitrc` et `xsession` en y indiquant :
>     xmodmap -e "pointer = 3 2 1"
> Page suivante Page précédente Table des matières