Page précédente Page suivante 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 :

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 :

  1. lire la documentation se trouvant dans ./doc. Un bon nombre d'écrans et de cartes sont décrites avec les horloges à utiliser.
  2. commencer avec une résolution faible (640x480) : c'est plus simple ;
  3. 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.
  4. lire le "Video HOWTO", écrit par J.M. Vansteene et disponible sur ftp.lip6.fr dans le répertoire /pub/linux/french/docs/HOWTO ;
  5. 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 Francais 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 :

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 :

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 :

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 précédente Page suivante Table des matières