10.2. Configuration de XFree86

La configuration de XFree86 commence avant tout par l'installation du serveur X. Un même serveur X peut prendre en charge plusieurs cartes graphiques sur une même machine, pourvu qu'il dispose des pilotes adéquats. Inversement, il est possible de lancer plusieurs serveurs X, chacun utilisant sa propre carte graphique, ou partageant la même carte si la machine n'a qu'un seul terminal X.

XFree86 fournit un unique serveur X, qui prend en charge tous les types de cartes graphiques à l'aide de pilotes spécifiques. Dans une installation normale, ces pilotes sont fournis sous forme de modules de ce serveur. Les pilotes peuvent ainsi être chargés dynamiquement par le serveur X, selon la configuration du système. Cette architecture permet à un même serveur X de charger plusieurs pilotes pour plusieurs cartes graphiques, afin de gérer les configurations disposant de plusieurs écrans connectés à des cartes graphiques de différents types. Il est donc nécessaire que les modules prenant en charge vos cartes graphiques soient installés, ce qui est normalement toujours le cas.

Par convention, le nom du serveur X est toujours X. Comme le nom du fichier programme du serveur X de XFree86 est XFree86 (on s'en serait douté...), il doit exister un lien symbolique /usr/X11/bin/X qui pointe vers le fichier /usr/X11R6/bin/XFree86. Ce lien est, encore une fois, normalement toujours présent sur les systèmes correctement configurés.

Une fois XWindow installé, la suite de la configuration de XFree86 se fait uniquement dans le fichier de configuration XF86Config. Ce fichier est classiquement stocké dans le répertoire /etc/X11/. Normalement, vous ne devez pas créer ce fichier vous-même. Votre distribution doit au moins vous en fournir un par défaut et, souvent, elle dispose d'un outil de configuration de XFree86 convivial qui fera quasiment tout le travail pour vous. Ce genre d'outil est de plus capable de configurer XFree86 pour les pilotes spécifiques fournis avec les distributions (il n'est pas rare que les sociétés éditrices de distributions développent des serveurs X pour les nouvelles cartes graphiques). Lisez donc votre documentation pour plus de détails à ce sujet.

Vous pouvez également utiliser les programmes de configuration fournis avec XFree86, qui vous permettront de générer ce fichier. Il existe trois possibilités pour générer un fichier de configuration XF86Config. La première méthode est de demander directement au serveur X de détecter le matériel présent sur votre machine et de générer le fichier XF86Config correspondant. La deuxième méthode, qui est aussi la plus sûre, est d'utiliser le programme xf86config. Il s'agit d'un outil fonctionnant en mode texte, qui est effroyablement peu pratique à utiliser. Enfin, un autre outil, beaucoup plus convivial, est en cours de développement. Il s'agit de xf86cfg. Cet outil permet de générer et de modifier les fichiers xf86cfg de manière conviviale, soit en mode texte avec des menus, soit en mode graphique. Lorsque cet outil sera terminé, la configuration de XFree86 sera beaucoup plus aisée. Encore une fois, je ne saurai que vous recommander d'utiliser l'outil de configuration fourni avec votre distribution.

10.2.1. Génération automatique du fichier XF86Config

Le serveur X de XFree86 est capable de détecter le matériel installé sur une machine et de générer un fichier de configuration XF86Config adapté à ce matériel. Pour cela, il suffit simplement de le lancer avec l'option -configure sous le compte root, comme dans l'exemple suivant :

XFree86 -configure

À l'issue de cette commande, le serveur X écrira un fichier XF86Config.new dans le répertoire personnel de l'utilisateur root.

Cependant, le fichier de configuration ainsi généré n'utilisera que les options de configuration les plus sûres et devra souvent être révisé complètement. En pratique, seuls les paramètres de la carte graphique et de la souris seront correctement détectés. Il ne faut donc utiliser cette fonctionnalité que dans le but d'obtenir un squelette de fichier XF86Config, que l'on personnalisera ensuite. Ce fichier pourra être copié dans le répertoire /etc/X11/ sous le nom XF86Config une fois qu'il aura été corrigé.

10.2.2. Utilisation de xf86config

Comme il l'a été indiqué plus haut, xf86config est un programme fonctionnant en mode texte exclusivement. Son principe de fonctionnement est très simple : il pose une série de questions sur votre matériel, puis il génère un fichier XF86Config générique pour votre matériel. Vous pourrez ensuite partir de ce modèle pour personnaliser votre configuration et pour préciser les paramètres que xf86config ne prend pas en charge.

Le principal problème de xf86config est qu'il ne laisse pas droit à l'erreur. La moindre faute de frappe ou la moindre hésitation est prise comme une réponse valide, et il est impossible de revenir en arrière. Cela est d'autant plus énervant que dans ce cas, il ne reste plus qu'une solution, qui est de tout recommencer à partir du début. Après trois ou quatre erreurs, on finit par faire extrêmement attention à ce que l'on tape.

Lorsqu'on lance xf86config, il commence par afficher un message indiquant qu'il va créer un nouveau fichier de configuration XF86Config que l'on pourra utiliser par la suite comme point de départ pour paramétrer son système XWindow. Il faut valider pour passer ce message et commencer la configuration proprement dite.

La première question que xf86config pose est le type de la souris que vous voulez utiliser. Il existe un grand nombre de types de souris sur le marché, cependant seuls deux types sont réellement courants.

Initialement, les souris se connectaient sur le port série des ordinateurs. Ces souris, dites souris sérielles, étaient relativement répandues et sont généralement référencées sous le terme de « compatible Microsoft ». Il faut donc utiliser l'option « Microsoft compatible (2-button protocol) » pour ces souris. Notez que certaines souris sérielles utilisent un protocole différent pour gérer un troisième bouton. Si vous disposez d'une telle souris, il faut choisir l'option « Mouse Systems (3-button protocol) ».

Plus récemment, le port PS/2 est apparu pour les claviers et les souris. Ce port permet de gérer directement la plupart des souris actuelles, et il est probable que votre souris soit une souris PS/2. L'option à utiliser est cette fois l'option « PS/2 Mouse ». Il faut surtout ne pas confondre les souris PS/2 avec les souris bus (que l'on peut utiliser avec l'option « Bus Mouse »), qui sont des souris relativement peu répandues et qui utilisaient des bus spéciaux. Les autres options sont réservées à des souris peu répandues. Si vous en utiliser une, vous devez choisir l'option correspondante.

Notez que les souris à molette connectées sur le port PS/2 utilisent un protocole de communication légèrement différent de celui que les autres souris PS/2 utilisent. Malheureusement, xf86config ne propose pas d'option pour ces souris, et une intervention manuelle dans le fichier de configuration XF86Config est nécessaire pour les configurer. La manière de procéder sera détaillée dans la Section 10.2.4.

La question suivante demande si vous désirez activer la fonctionnalité d'émulation d'un troisième bouton pour les souris à deux boutons. Cette émulation permet d'utiliser les nombreux programmes pour XWindow qui nécessitent d'utiliser une souris à trois boutons. Le clic sur le troisième bouton est alors simulé en appuyant sur les deux boutons de la souris simultanément. Il est très vivement recommandé de répondre par 'y' à cette question si votre souris ne dispose que de deux boutons. En revanche, si elle dispose de plus de trois boutons, ou si elle dispose d'une roulette, il faut répondre par la négative.

xf86config demande ensuite le port sur lequel votre souris est connectée. Ce port est généralement le port /dev/ttyS0 pour les souris sérielles et /dev/psaux pour les souris PS/2. Les distributions créent souvent un lien symbolique /dev/mouse sur le port effectivement utilisé par la souris, si bien que la réponse par défaut utilise ce port. C'est la réponse recommandée, validez donc pour passer à la question suivante.

Vient ensuite la sélection du type de clavier. Encore une fois, un certain nombre de modèles de claviers ont été vendus sur le marché. Cependant, seuls quelques-uns sont réellement répandus. En France, on trouve essentiellement les claviers internationaux 102 touches et 105 touches, auxquels correspondent les réponses « Generic 102-key (Intl) PC » et « Generic 105-key (Intl) PC ». Si vous utilisez un clavier Microsoft Natural Keyboard, choisissez l'option « Microsoft Natural ».

Vous devrez ensuite indiquer la disposition de ce clavier. Il faut évidemment choisir l'option « French ». xf86config demande alors de saisir un nom de variante pour le clavier choisi. Comme le clavier français n'est décliné que sous une seule variante, vous pouvez simplement valider pour passer à la suite de la configuration du clavier.

xf86config vous propose alors de modifier des paramètres additionnels du clavier (emplacement des touches modificatrices telles que les touches de majuscule, de contrôle et de jeu de caractères alternatif, état des diodes, etc.). En général, cela n'est pas nécessaire et vous pouvez répondre 'n' à cette question.

La partie difficile vient ensuite. xf86config vous le signale avec un message indiquant que les informations de synchronisation horizontale et verticale sont extrêmement importantes pour configurer correctement les modes vidéo. La signification de ces valeurs vous sera décrite plus loin en détail, pour l'instant, contentez-vous de récupérer le manuel de votre moniteur et recherchez ses caractéristiques précises. Validez ensuite pour passer à la question suivante.

xf86config vous demande alors la plage de fréquences horizontales que votre moniteur est en mesure d'accepter. Il propose un certain nombre de choix standards, qui correspondent aux différents types de moniteurs existant sur le marché. Cependant, ces valeurs sont les plus mauvaises, car il est fort probable que votre moniteur sache faire mieux que ce que les standards imposent. Vous devez donc soit accepter une des plages de valeurs proposées, soit saisir la plage correspondant exactement à votre moniteur à l'aide de l'option « Enter your own horizontal sync range ». Si vous choisissez cette dernière option, vous devrez ensuite saisir la plage de valeurs des fréquences horizontales de votre moniteur. Ne les inventez pas, cela ne marchera pas. Saisissez les vraies valeurs.

La même question est alors posée pour la plage de fréquences verticales. Encore une fois, vous pouvez choisir l'une des plages proposées selon le type de votre moniteur, ou saisir vous-même la plage de fréquences citée dans ses caractéristiques techniques à l'aide de l'option « Enter your own vertical sync range ». À l'issue de cette question, xf86config vous demande de saisir le nom du moniteur que vous venez ainsi de configurer. Ce nom est arbitraire, il ne sert que pour l'identifier de manière lisible par la suite. Entrez, par exemple, le nom du modèle de l'écran dont vous disposez.

La question suivante vous demande simplement si vous désirez choisir votre carte graphique dans la liste des cartes graphiques supportées par XFree86. Il est recommandé de répondre par l'affirmative en tapant 'y'. xf86config affiche alors la liste des cartes gérées, qui est assez longue. En fait, elle se présente sur plusieurs pages, et il faut appuyer sur la touche Entrée pour passer d'une page à la suivante. Si vous avez passé une page de trop, vous êtes bon pour passer toutes les pages pour revenir à la première, avant d'aller sur la page contenant votre carte graphique. Lorsque vous aurez trouvé votre carte, choisissez l'option correspondante et validez.

Si votre carte n'est pas présente dans la liste, cela ne signifie pas qu'elle n'est pas supportée par XFree86. En effet, chaque pilote est capable de prendre en charge un type de puce électronique, et il arrive que plusieurs cartes graphiques soient basées sur une électronique provenant d'un même fabricant. C'est la raison pour laquelle les pilotes de XFree86 portent généralement le nom des puces utilisées par les cartes. Par conséquent, si vous ne trouvez pas votre carte dans la liste, vous pouvez essayer de spécifier le pilote correspondant à l'électronique de votre carte. Dans le pire des cas, vous pourrez quasiment toujours utiliser le pilote générique VESA, qui permet de piloter toutes les cartes graphiques compatibles avec les standards VESA 2.0. Cependant, vous ne bénéficierez d'aucune accélération matérielle avec ce pilote.

Les questions qui suivent dépendent fortement de la carte sélectionnée. En effet, chaque carte peut avoir besoin d'un certain nombre de paramètres complémentaires pour fonctionner. Encore une fois, ces paramètres sont, normalement, indiqués dans le mode d'emploi de votre carte graphique ou, au pire, sur les composants de la carte eux-mêmes. Une des questions courantes concerne la quantité de mémoire vidéo dont cette carte dispose. Pour cette question, les choix les plus courants sont proposés, mais vous pouvez également spécifier vous-même cette quantité à l'aide de l'option « Other ». L'unité est ici le kilo-octet, pensez donc bien à multiplier par 1024 le nombre de méga-octet de mémoire vidéo de votre carte graphique avant de saisir la valeur. Lorque la configuration de la carte graphique sera terminée, xf86config vous demandera de saisir le nom de cette carte. Encore une fois, ce nom est arbitraire, mais vous devriez saisir un nom cohérent avec votre modèle.

xf86config vous propose alors de modifier l'ordre d'utilisation des modes graphiques pour chaque profondeur de couleur. Cet ordre doit être spécifié en donnant les numéros des différents modes, les uns après les autres, et en ne les séparant pas par des espaces. Par exemple, le nombre 432 sélectionnera les modes 4, 3 et 2, soit les modes 1024x768, 800x600 et 640x480. Notez que l'ordre des numéros est important, c'est l'ordre dans lequel ces modes seront choisi lorsqu'on basculera de l'un à l'autre. Lorsque vous aurez saisi les modes graphiques à utiliser et leur ordre d'apparition, xf86config vous proposera d'utiliser un écran virtuel de taille supérieure à la résolution physique du plus grand des modes graphiques choisi. Cela signifie que la résolution de l'affichage sera supérieure à celle de votre écran, et que XWindow fera défiler automatiquement l'image affichée lorsque la souris sortira de la portion d'image visible. Il est en général conseillé de répondre par la négative à cette question, car cela peut être facilement déroutant. Cependant, c'est une affaire de goût, et vous êtes libre d'accepter ce comportement. Notez que quelle que soit la réponse que vous donnerez, XWindow utilisera comme résolution logique la résolution du plus grand mode que vous avez sélectionné. Par conséquent, ce mécanisme de défilement sera encore utilisé pour les modes graphiques de résolution inférieure, avec comme taille d'écran virtuel la taille du mode ayant la résolution la plus grande. Lorsque vous aurez configuré tous vos modes graphiques, vous pourrez passer à la suite en choisissant l'option « The modes are OK, continue. ».

xf86config vous demande alors le nombre de couleurs à utiliser par défaut lorsque vous démarrez en mode graphique. Choisissez bien, car il ne sera pas possible de changer cette valeur une fois que l'environnement graphique sera lancé. Vous pourrez bien entendu la modifier manuellement, mais il vous faudra relancer le serveur X après cela. La plupart des cartes graphiques modernes supportent les modes graphiques à 16 millions de couleurs, la réponse recommandée est donc « 24 bits (16 million colors) ».

Enfin, la dernière question est tout simplement si vous désirez enregistrer le fichier XF86Config correspondant aux options que vous avez choisies. Il faut bien entendu répondre par 'y', ou sinon vous devriez vous demander pourquoi vous êtes en train de lire ceci...

Le fichier XF86Config généré est généralement fonctionnel, mais parfaitement améliorable. Le format de ce fichier sera décrit en détail dans la Section 10.2.4. Si vous l'ouvrez, vous constaterez que xf86config a ajouté un nombre impressionnant de commentaires pour vous aider dans vos expérimentations. Bien entendu, vous trouverez également des informations complémentaires dans la page de manuel XF86Config.

10.2.3. Utilisation de xf86cfg

La manière la plus agréable d'effectuer la configuration de XFree86 est sans nul doute d'utiliser l'utilitaire xf86cfg. Ce programme permet aussi bien de créer un fichier de configuration XF86Config initial que de modifier une configuration existante de manière graphique. Il dispose également d'un mode texte, qui reprend les mêmes questions que xf86config, mais d'une manière plus conviviale, à l'aide d'un système de menus.

10.2.3.1. Configuration en mode graphique

Lorsqu'on lance xf86cfg, celui-ci commence par regarder si la variable d'environnement DISPLAY est définie ou non. Si elle est définie, il tente de se connecter au serveur X gérant ce display afin de permettre l'édition du fichier de configuration XF86Config du système. Notez qu'il ne permet pas de modifier le fichier XF86Config utilisé par le serveur X auquel il se connecte si celui-ci utilise un autre fichier que le fichier du système : le serveur X n'est utilisé par xf86cfg que pour son affichage.

Si, en revanche, la variable d'environnement DISPLAY n'est pas définie, xf86cfg considère que XWindow n'est pas installé sur la machine locale et appelle le serveur X avec l'option -configure afin de générer un nouveau fichier XF86Config. Il lance ensuite le serveur X détecté et utilise ce serveur pour permettre la modification du fichier XF86Config ainsi créé.

À son démarrage, il vérifie que la souris est correctement configurée. Si tel n'est pas le cas, il propose d'utiliser les touches du curseur du pavé numérique pour déplacer le pointeur de la souris, ainsi que les touches /, * et - respectivement pour le premier, le deuxième et le troisième bouton de la souris. Je déconseille fortement d'essayer d'effectuer la configuration dans ces conditions, car ce n'est réellement pas utilisable. Dans ce cas de figure, on cherchera plutôt à utiliser l'interface en mode texte de xf86cfg, que nous présenterons dans la section suivante.

L'interface de xf86cfg en mode graphique est très simple. La partie supérieure de la fenêtre comprend un menu avec deux entrées. La première entrée permet de choisir les différentes parties intervenant dans la configuration. La deuxième entrée (intitulée « Expert Mode ») donne accès quant à elle à un mode de paramétrage permettant d'éditer directement les propriétés du fichier XF86Config. Ce mode de fonctionnement est réservé aux utilisateurs avertis et ne sera pas décrit ici.

La première entrée de menu comprend plusieurs options. L'option « Configure Layout » permet d'effectuer la configuration générale du display. L'option « Configure Screen » permet de configurer la disposition des différents écrans d'un même display les uns par rapport aux autres. Elle n'est réellement utile que dans le cas des configurations à plusieurs écrans. L'option « Configure Modeline » donne la possibilité de configurer les différents modes graphiques de chaque configuration. Enfin, l'option « Configure AccessX » permet de spécifier les options des différents périphériques d'entrée. Ces deux options de menus sont réservées aux utilisateurs expérimentés et ne seront pas décrites dans ce document.

L'essentiel de la configuration se fait dans l'écran affiché lorsque l'option « Configure Layout » est choisie. Cet écran est constitué d'une barre d'icônes permettant d'ajouter les différents périphériques à la configuration courante : souris, claviers, cartes graphiques et moniteurs. Il n'est possible d'éditer qu'une seule configuration à la fois, la configuration courante peut être sélectionnée à l'aide du bouton situé dans la partie inférieure gauche de la fenêtre. Le corps de la fenêtre elle-même contient une représentation de cette configuration, avec les différents périphériques utilisés et les relations qui existent entre eux.

En cliquant avec le bouton droit de la souris sur ces éléments, vous pouvez faire apparaître un menu contextuel concernant cet élément. Ce menu peut contenir l'option « configure », qui donne accès à une boîte de dialogue permettant d'éditer les propriétés de l'élément, l'option « option », qui permet d'ajouter des options générales à cet élément, les options « enable » et « disable », qui permettent d'activer ou de désactiver l'élément en question dans la configuration, et l'option « remove », dont le but est de supprimer l'élément concerné.

Une configuration typique comprend au moins une souris, un clavier, une carte graphique et un moniteur. Il est recommandé d'ajouter les éléments de la configuration dans cet ordre, afin d'éviter d'avoir à revenir plusieurs fois sur certains de ces éléments.

La boîte de dialogue ouverte par l'option « configure » sur une souris comprend un champ contenant l'identificateur de cette souris, la liste des fichiers spéciaux de périphériques pour la sélection du fichier spécial de périphérique auquel la souris est connectée, la liste des protocoles gérés par XFree86 et un bouton permettant d'activer l'émulation du troisième bouton pour les souris à deux boutons. Généralement, les souris sont connectées soit sur le port série (fichier spécial de périphérique /dev/ttyS0 ou /dev/ttyS1), soit sur le port PS/2 (fichier spécial de périphérique /dev/psaux). Les principaux protocoles gérés par XFree86 sont les suivants :

Microsoft

C'est le protocole utilisé par la plupart des souris connectées sur le port série. Ce type de souris est de plus en plus rare actuellement, ne choisissez cette option que si vous disposez de ce type de souris ;

IntelliMouse

C'est le protocole utilisé par les souris à molette connectées sur le port série. N'utilisez pas ce protocole pour les souris à molette connectées sur le port PS/2, la souris ne fonctionnerait pas.

PS/2

C'est le protocole qui convient pour la majorité des souris connectées sur un port PS/2. Notez toutefois que ce n'est pas le cas des souris à molette Logitech et Microsoft ;

IMPS/2

C'est le protocole des souris à molette connectées sur port PS/2. Malheureusement, ce protocole n'est pas proposé par xf86cfg. Il est donc impossible de configurer une souris de ce type avec cet utilitaire, sauf à passer dans le mode expert. La configuration à utiliser pour ce type de souris sera décrite dans la Section 10.2.4.

Lorsque vous aurez configuré votre souris, vous pourrez utiliser le bouton « Apply changes » pour prendre en compte les changements si vous avez modifié les paramètres de la souris courante. Dès lors, vous devriez avoir une souris fonctionnelle, et vous pouvez l'activer avec l'option « enable » du menu contextuel. Lorsque la souris est activée, un lien apparaît entre l'unité centrale de l'ordinateur et cette souris dans la fenêtre de xf86cfg.

La boîte de dialogue ouverte par l'option « configure » du menu contextuel des claviers comprend, comme la boîte de dialogue des propriétés des souris, un champ permettant de saisir le nom de ce clavier dans la configuration. Vous pouvez également choisir le modèle de clavier et sa disposition en fonction de sa langue. Pour les claviers français, le modèle à utiliser est généralement celui des claviers internationaux 102 ou 105 touches, et la disposition à utiliser est la disposition « French ». Lorsque vous aurez configuré le clavier correctement, vous pourrez appliquer les changements avec le bouton « Apply changes ». Vous pourrez également activer le clavier dans la configuration courante à l'aide de l'option « enable » du menu contextuel du clavier. Un lien entre ce clavier et l'unité centrale doit alors apparaître dans la fenêtre principale de xf86cfg.

La boîte de configuration des cartes graphiques contient le champ habituel pour donner un nom à la carte et la liste des cartes graphiques reconnues automatiquement par XFree86. Si votre carte ne se trouve pas dans cette liste, vous devrez choisir le pilote à utiliser. En général, les pilotes portent le nom de la puce électronique sur laquelle la carte graphique est basée. Si aucun pilote n'est adapté pour votre carte, vous pourrez malgré tout utiliser un des pilotes génériques vga ou vesa. Enfin, dans le cas où plusieurs cartes graphiques sont installées dans l'ordinateur, vous devrez spécifier l'adresse de la carte sur le bus PCI/AGP. N'oubliez pas d'activer la carte graphique à l'aide de l'option « enable » du menu contextuel lorsque vous aurez fini la configuration.

La boîte de dialogue des moniteurs permet de spécifier un nom pour le moniteur ainsi que ses plages de fréquences horizontales et verticales. Vous pouvez aussi sélectionner la carte graphique à laquelle ce moniteur est connectée. La liste ne propose que les cartes graphiques que vous avez configuré précédemment. Les moniteurs n'ont pas besoin d'être activés, car il sont liés aux cartes graphiques.

Une fois la configuration générale définie, vous pouvez, si elle contient plusieurs écrans, spécifier la disposition relative de ces écrans à l'aide de l'option « Configure Screen » du menu principal de xf86cfg. Cette option affiche les différents écrans dans la fenêtre de xf86cfg, et vous pouvez les faire glisser pour les disposer comme vous le désirez.

Enfin, l'option de menu principal « Configure Modeline » vous permettra de définir de nouveaux modes graphiques et de les ajuster. Cet écran fournit les mêmes fonctionnalités que l'utilitaire xvidtune, que l'on décrira en détail dans la Section 10.2.6. Cet écran ne sera donc pas traité plus en détail ici.

Lorsque vous quittez xf86cfg, il vous propose d'enregistrer le fichier de configuration /etc/X11/XF86Config correspondant à la configuration que vous venez de définir. Vous pouvez spécifier un autre nom si vous le désirer, afin d'enregistrer ces paramètres dans un autre fichier. xf86cfg demande également si vous désirez sauvegarder la configuration du clavier, pour le cas où vous auriez modifié les paramètres des périphériques d'entrée.

10.2.3.2. Configuration en mode texte

xf86cfg permet également d'effectuer la configuration de XFree86 en mode texte, à l'aide d'une interface basée sur un système de menus. Bien que ce mode de fonctionnement soit en mode texte, il permet d'effectuer les mêmes tâches que xf86config d'une manière beaucoup plus conviviale.

Pour lancer xf86cfg en mode texte, il suffit simplement de lui passer l'option -textmode en ligne de commande :

xf86cfg -textmode

Lors de son démarrage, xf86cfg affiche un écran d'accueil que vous pouvez passer en validant l'option « Ok ».

xf86cfg affiche ensuite son menu principal, qui comprend des entrées pour ajouter des souris, claviers, moniteurs et cartes graphiques. Ce menu contient également une entrée « Configure screen », qui permet d'associer les cartes graphiques aux moniteurs, et une entrée « Configure layout », qui permet de configurer le display en spécifiant le clavier, la souris et les différents écrans à utiliser.

Le menu de configuration de la souris permet d'ajouter, de supprimer et de modifier des souris. L'ajout d'une souris nécessite de saisir un identificateur pour la souris, le protocole que cette souris utilise et si le troisième bouton doit être simulé ou non. xf86cfg demande également le fichier spécial de périphérique à utiliser pour accéder à cette souris. Notez que xf86cfg ne permet pas de choisir le protocole IMPS/2 utilisé par les souris à molette connectées sur le port PS/2, ce type de souris ne peut donc pas être configuré avec cet outil.

De la même manière, le menu de configuration du clavier demande de saisir un identificateur lorsqu'on ajoute un nouveau clavier. Le type de clavier est également demandé, ainsi que sa disposition. Pour les claviers français, il faut utiliser les claviers internationaux 102 ou 105 touches.

La configuration des moniteurs permet de spécifier un identificateur pour le moniteur, ainsi que les plages de fréquences horizontales et verticales. La configuration des cartes graphiques quant à elle permet également de spécifier un identificateur pour la carte, et de choisir le type de carte dans la liste des cartes prises en charge par XFree86. Si votre carte n'est pas listée, vous devrez choisir l'option « ** Unlisted card ** » et indiquer le pilote à utiliser pour cette carte. Ce pilote porte généralement le nom de la puce électronique sur laquelle cette carte est conçue, mais vous pouvez également utiliser les pilotes génériques vga et vesa pour les cartes graphiques compatibles avec ces standards. Enfin, xf86cfg vous propose de spécifier l'adresse de la carte sur le bus PCI/AGP, pour le cas où vous auriez plusieurs cartes installées sur la même machine.

Les identifiants donnés aux moniteurs et aux cartes sont utilisés dans le menu de configuration des écrans, qui demande quelle carte et quel moniteur sont utilisés pour chaque écran. La profondeur de couleur par défaut est également demandée, ainsi que la liste des modes graphiques gérés par cet écran. Notez que l'interface en mode texte de xf86cfg ne permet pas de définir de nouveaux modes graphiques, pour cela, il faut recourir à l'interface en mode graphique ou éditer manuellement le fichier de configuration XF86Config.

Enfin, le menu de configuration général permet de définir, de modifier et de supprimer les displays. Chaque display doit contenir une référence à une souris, un clavier et un ou plusieurs écrans. Remarquez encore une fois que l'interface en mode texte de xf86cfg ne permet pas de préciser la disposition relative des écrans les uns par rapport aux autres. Pour cela, vous devrez utiliser l'interface en mode graphique ou éditer manuellement le fichier de configuration de XFree86.

Lorsque vous aurez fini la configuration de XFree86, vous pourrez l'enregistrer à l'aide du menu « Write XF86Config and quit ». Ce menu vous demande le chemin complet sur le fichier de configuration à écrire. Vous pouvez spécifier un autre fichier que le fichier de configuration du système si vous désirez l'éditer et le modifier manuellement de manière indépendante.

10.2.4. Description du fichier XF86Config

Les fichiers générés par les outils de configuration de XFree86 sont, comme nous l'avons déjà précisé, des fichiers devant servir de point de départ pour réaliser votre configuration. Normalement, ils permettent de démarrer le serveur X et de travailler dans de bonnes conditions, toutefois, il est possible d'améliorer sensiblement la qualité de l'affichage et l'ergonomie du système en mettant un peu la main à la pâte. Cette section entreprend donc de décrire la structure du fichier de configuration XF86Config et les principales options que l'on peut utiliser. D'autre part, il peut être instructif de connaître la nature des informations que ce fichier contient, et quelles sont les conséquences des choix effectués dans les utilitaires de configuration.

10.2.4.1. Structure générale du fichier XF86Config

Le fichier XF86Config est constitué d'un certain nombre de sections contenant chacune les options pour une partie de l'architecture de XFree86. La configuration de XFree86 est un sujet ardu, aussi seules les principales sections du fichier XF86Config seront décrites dans ce document. Vous pouvez vous référer à la page de manuel XF86Config et à la documentation de XFree86 pour plus de détails à ce sujet.

Certaines sections peuvent être définies plusieurs fois, avec différents jeux d'options à chaque fois, afin de permettre la définition de plusieurs configurations. Bien entendu, lorsqu'un serveur X tourne, une seule configuration seulement est utilisée. Cette configuration est spécifiée soit directement en ligne de commande lors du lancement du serveur X, soit en indiquant une configuration par défaut dans le fichier de configuration.

D'autres sections sont globales, et contiennent les options de configuration générales du serveur X. Ces options concernent typiquement l'environnement dans lequel il est supposé fonctionner, et les options qui ne dépendent pas de la configuration utilisée.

La première section globale est la section « Files », qui porte relativement mal son nom, car au lieu de fichiers, elle indique les chemins vers les différentes ressources que le serveur X peut utiliser. Ces ressources comprennent les polices de caractères, l'emplacement des modules complémentaires et l'emplacement des fichiers de définitions de couleurs.

La deuxième section globale est la section « ServerFlags ». Cette section contient les options générales à utiliser par défaut pour tous les serveurs X. Elles permettent d'activer ou de désactiver certaines fonctionnalités ou extensions non standards. Ces options fournissent des valeurs par défaut, elles peuvent être modifiées pour chaque serveur X de manière indépendante si nécessaire.

La troisième section globale est la section « Module ». Cette section contient les commandes de chargement des différents modules du serveur X, lorsque ce serveur est compilé sous forme modulaire. Chaque module gère une certaine partie des fonctionnalités, et celles-ci peuvent donc être activées ou désactivées au niveau de cette section.

Viennent ensuite les sections de configuration des displays. Ces sections décrivent chacune un des aspects du display, et peuvent apparaître en de multiples exemplaires.

Le premier type de section de configuration des displays regroupe toutes les sections qui définissent les périphériques d'entrée de données (clavier, souris, table de digitalisation, etc.). Ces sections sont toutes nommées « InputDevice ».

Le deuxième type de section de configuration contient la définition des adaptateurs graphiques. Ces sections permettent de donner les renseignements nécessaires pour la configuration des différentes cartes graphiques installées sur le système. Elles sont toutes nommées « Device ».

Viennent ensuite les sections « Monitor » qui, comme leur nom l'indique, permettent de définir les caractéristiques physiques des différents moniteurs utilisables. Encore une fois, il peut exister plusieurs sections de ce type, pour définir plusieurs moniteurs dans les configurations multi-têtes.

Normalement, chaque moniteur est, en fonction de ses capacités, capable de gérer différents modes graphiques. Les sections « Monitor » peuvent donc contenir des définition de modes graphiques, mais ce n'est pas la technique recommandée. En effet, il est possible d'utiliser plusieurs moniteurs avec des modes graphiques identiques, aussi XFree86 donne-t-il la possibilité de définir les modes graphiques en dehors des sections « Monitor » (ce n'est toutefois pas une obligation). Dans ce cas, les modes graphiques seront définis dans des sections nommées « Modes », et celles-ci seront référencées par les sections des moniteurs qui les utilisent.

Les moniteurs sont faits pour être branchés sur des cartes graphiques. Comme on l'a vu ci-dessus, il est possible de définir plusieurs sections « Device » et plusieurs sections « Monitor », afin de décrire plusieurs cartes graphiques et plusieurs moniteurs. Il faut donc spécifier quels moniteurs sont connectés à quelles cartes graphiques. C'est exactement le rôle des sections « Screen ». Pour XFree86, un écran n'est donc rien d'autre qu'un couple fonctionnel moniteur / carte graphique. Notez que certaines cartes graphiques haut de gamme peuvent prendre en charge plusieurs écrans. Dans ce cas, il faudra définir plusieurs sections « Device » pour la même carte graphique, et spécifier les ports de sortie dans les options de ces sections.

Enfin, il ne reste plus qu'à définir le display lui-même. Nous avons déjà défini la notion de display ci-dessus comme étant le regroupement d'un clavier, d'une souris et d'un ou plusieurs écrans. Ces associations sont donc définies dans des sections nommées « ServerLayout ». Une section de ce type contient donc nécessairement une référence à une section « InputDevice » pour le clavier et une section « InputDevice » pour le périphérique de pointage, et une ou plusieurs sections « Screen » pour les écrans utilisés par le serveur X. Dautre part, comme leur nom l'indique, les sections « ServerLayout » permettent également de spécifier la disposition relative des écrans les uns par rapport aux autres, dans le cas des configurations multi-têtes.

Figure 10-2. Structure du fichier XF86Config

Nous allons à présent décrire un peu plus en détail les différentes sections qui ont été présentées ici. Toutes ces sections sont introduites par le mot clé « Section » suivi du type de la section, indiqué entre guillemets, et se terminent toutes par le mot clé « EndSection ». Entre ces deux balises, un certain nombre d'informations peuvent être spécifiées, et peuvent même être regroupées en sous-sections. Étant donné le grand nombre d'options qui peuvent être indiquées dans les sections du fichier XF86Config, seules les plus classiques seront décrites ci-dessous.

10.2.4.2. Section « Files »

La section « Files », contient les chemins vers les ressources utilisés par XFree86. Ce peut être les répertoires de polices de caractères, les répertoires d'installation des modules du serveur X, ou encore des chemins indiquant l'adresse et le port de serveurs de polices sur un réseau. Cette section est donc relativement riche de renseignements pour le serveur X. Un exemple typique de section « Files » est donné ci-dessous :

Section "Files"
    RgbPath     "/usr/X11R6/lib/X11/rgb"
    FontPath    "/usr/X11R6/lib/X11/fonts/local"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc"
    FontPath    "/usr/X11R6/lib/X11/fonts/75dpi"
    FontPath    "/usr/X11R6/lib/X11/fonts/100dpi"
    ModulePath	"/usr/X11R6/lib/modules"
EndSection

Les chemins indiqués sont des chemins Unix classiques, et sont introduits par les mots clés « FontPath », « RgbPath » et « ModulePath » respectivement pour les chemins sur les répertoires de polices, les répertoires de fichiers de définition de couleurs et les répertoires d'installation des modules. Cependant, comme on le verra plus loin, l'accès aux serveurs de polices se fait à l'aide d'une syntaxe de chemin particulière.

10.2.4.3. Section « ServerFlags »

Cette section regroupe les principales options globales de tous les serveurs X. Ces options sont généralement introduites à l'aide du mot clé « Option », suivi du nom de l'option entre guillemets, lui-même suivi d'une éventuelle valeur pour cette option, elle aussi entre guillemets. Par exemple, l'option :

Option "DontZap"

permet d'empêcher que l'utilisateur puisse utiliser la combinaison de touches CTRL+ALT+BACKSPACE (en temps normal, cette combinaison de touches a pour conséquence de tuer le serveur X, et de forcer la déconnexion de toutes les applications en cours de fonctionnement).

De même, l'option :

Option "Dont Zoom"

désactive les combinaisons de touches CTRL+ALT+PLUS et CTRL+ALT+MINUS, où PLUS et MINUS sont respectivement les touches plus et moins du pavé numérique. Ces deux combinaisons de touches sont normalement utilisées respectivement pour passer d'un mode vidéo au suivant ou au précédent.

Il existe beaucoup d'autres options générales du serveur X. Les plus intéressantes sont sans doute les options « BlankTime », « StandbyTime », « SuspendTime » et « OffTime », qui permettent de contrôler les durées des économiseurs d'écrans matériels. Vous trouverez la description des autres options dans les fichiers XF86Config générés automatiquement, et bien entendu dans la page de manuel XF86Config.

10.2.4.4. Section « Module »

Cette section contient la liste des modules que les serveurs X doivent charger lorsqu'ils démarrent. Ces modules peuvent être spécifiés de deux manières différentes, une abrégée et une plus complète. La forme abrégée utilise le mot clé « Load », suivi du nom du module entre guillemets. Par exemple, la ligne suivante permet de demander le chargement du module de gestion des polices TrueType :

Load "freetype"

La forme complète utilise une sous-section, introduite par le mot clé « SubSection » suivi du nom du module entre guillemets, et se terminant par le mot clé « EndSubSection ». Ces sous-sections ont la même structure que les sections normales, et permettent de spécifier des options pour le module à l'aide du mot clé « Option ». Par exemple, les extensions du serveur X peuvent être chargées à l'exception de l'extension DGA à l'aide de la sous-section suivante :

SubSection "extmod"
    Option "omit XFree86-DGA"
EndSubSection

Note : L'extension DGA permet aux applications d'accéder directement à la mémoire vidéo de la carte graphique. La désactiver accroît donc la sécurité du système, mais peut empêcher certaines applications de fonctionner correctement. C'est le cas des jeux, et surtout des programmes de télévision sous XWindow. Par conséquent, il est probable que vous vouliez laisser ces extensions activées. Dans ce cas, il suffit simplement de ne pas spécifier l'option omit de l'exemple précédent.

Outre les modules freetype et extmod donnés dans les exemples précédents, vous pourrez peut-être utiliser les modules dri et glx. Ces modules permettent respectivement d'activer les fonctionnalités DRI (abréviation de l'anglais « Direct Rendering Infrastructure ») du noyau et le support de la 3D par OpenGL. Les différentes cartes capables de gérer les fonctionnalités DRI sont celles listées dans la configuration du noyau, que l'on a déjà vue dans la Section 7.3. Notez toutefois que ces fonctionnalités ne sont indispensables pour utiliser le module glx que pour ces cartes. En particulier, les cartes graphiques basées sur les puces NVidia peuvent utiliser le module glx sans charger le module dri, car le pilote fourni par NVidia utilise un autre mécanisme.

10.2.4.5. Section « InputDevice »

Les sections « InputDevice » permettent de décrire tous les types de périphériques d'entrée. En pratique, il s'agira souvent de claviers et de souris, mais il est également possible de connecter des périphériques plus exotiques tels que les joysticks et les tablettes de dessin.

Les sections « InputDevice » doivent être nommées avec un identificateur unique, introduit par le mot clé « Identifier ». Ce mot clé doit être suivi du nom de la section, donné entre guillemets. C'est ce nom qui sera utilisé pour référencer la section dans les sections « ServerLayout » pour définir les différents displays.

La nature du périphérique d'entrée est ensuite spécifiée par la valeur de l'option « Driver ». En pratique, on utilisera quasiment toujours Keyboard ou Mouse, qui correspondent bien évidemment aux pilotes pour les claviers et les souris.

La suite des options de la section « InputDevice » est fonction de la nature du pilote utilisé. Les options les plus courantes pour un clavier sont données dans l'exemple suivant :

Section "InputDevice"
    Identifier  "Clavier 1"
    Driver      "Keyboard"

# L'option suivante permet de spécifier le délai
# avant répétition (en millisecondes) et la vitesse
# de répétition une fois ce délai passé (en caractères
# par seconde) :
    Option      "AutoRepeat" "500 30"

# L'option suivante indique que la définition de clavier
# à utiliser est celle de XFree86 :
    Option      "XkbRules" "xfree86"

# L'option suivante indique que le modèle de clavier
# utilisé est un clavier 105 touches :
    Option      "XkbModel" "pc105"

# L'option suivante indique que la disposition
# des touches est celle d'un clavier français :
    Option      "XkbLayout" "fr"

EndSection

De même, vous trouverez ci-dessous un exemple typique de section « InputDevice » pour une souris :

Section "InputDevice"
    Identifier  "Souris 1"
    Driver      "Mouse"

# L'option suivante indique que la souris est
# une souris de type PS/2 :
    Option      "Protocol" "PS/2"

# L'option suivante indique le fichier spécial
# de périphérique à utiliser pour cette souris :
    Option      "Device" "/dev/psaux"

# L'option suivante indique le nombre de boutons
# de la souris :
    Option      "Buttons" "2"

# L'option suivante demande à XFree86 d'émuler
# le troisième bouton de la souris par clic
# simultané des deux boutons :
    Option      "Emulate3Buttons"

EndSection

Note : Pour les souris à molette connectées sur port PS/2, vous devrez choisir le protocole « IMPS/2 » au lieu du protocole « PS/2 » et indiquer que la souris a 5 boutons. De plus, vous devrez ajouter l'option « ZAxisMapping » dans la section « InputDevice » de votre souris, et lui donner la valeur « 4 5 ». Cette option permet de rediriger la rotation de la molette sur les événements des boutons 4 et 5 de la souris. De cette manière, vous pourrez utiliser votre molette dans toutes les applications qui gèrent ces deux boutons.

10.2.4.6. Sections « Device »

Les sections « Device » contiennent les descriptions des cartes graphiques utilisées. Ces descriptions n'indiquent absolument pas quel est le serveur X utilisé : elles ne contiennent qu'une description du matériel. Notez, encore une fois, qu'il est possible de définir plusieurs sections « Device », qui pourront être utilisées dans les sections « Screen » associant les cartes graphiques aux moniteurs.

Tout comme les sections « InputDevice », les sections « Device » doivent disposer d'un identificateur unique, afin de pouvoir les référencer dans les sections « Screen » qui les utilisent. Cet identificateur est introduit par le mot clé « Identifier » et suivi d'un nom indiqué entre guillemets.

Les sections « Device » peuvent contenir un certain nombre d'options permettant de caractériser la carte graphique et de préciser ses capacités (mémoire, rapidité, adresse sur le bus PCI, etc.). Toutes ces options sont bien entendu spécifiques aux différentes cartes graphiques, et ne seront pas décrites en détail ici.

L'option la plus importante est sans doute l'option « Driver », qui permet d'indiquer le pilote que le serveur X devra charger pour piloter cette carte graphique. C'est à ce niveau qu'il faut surtout ne pas se tromper, puisque la moindre erreur ferait échouer le démarrage du serveur X. En général, les pilotes portent le nom du chipset utilisé par la carte graphique, si bien qu'il n'est pas difficile de déterminer la valeur exacte à utiliser. XFree86 fournit également deux pilotes génériques vga et vesa, permettant respectivement de prendre en charge les cartes graphiques compatibles avec le standard VGA ou compatibles avec le standard VESA 2.0. Sachez cependant que ces pilotes ne disposent d'aucune accélération matérielle, et que leurs performances sont donc bien inférieures aux pilotes spécialisés pour chaque carte graphique.

Vous trouverez ci-dessous un exemple de section « Device » typique :

Section "Device"
    Identifier  "Carte 1"
    VendorName  "CHAINTECH"
    BoardName   "TORNADO I7000"

# Cette option indique au serveur X qu'il doit
# charger le module i740_drv pour piloter cette
# carte graphique :
    Driver      "i740"

# Cette option indique la quantité de mémoire
# vive dont cette carte dispose (en ko) :
    VideoRam    8192
EndSection

Note : Les options des sections « Device » ne sont pas très compliquées à utiliser. Cependant, quelques-unes peuvent poser des problèmes lorsqu'on réalise des configurations multi-têtes (c'est-à-dire des configurations disposant de plusieurs écrans). Dans la majorité des cas, il faut installer plusieurs cartes graphiques dans le PC pour pouvoir utiliser plusieurs écrans. En général, on utilise une carte AGP et une ou plusieurs cartes PCI. Il va de soi qu'il faut que chaque pilote utilise la bonne carte, aussi faut-il indiquer, dans chaque section « Device », l'adresse de la carte décrite par la section. Cette adresse est définie à l'aide de l'option « BusID ». Cette option permet de retrouver la carte graphique sur les différents bus systèmes. Les cartes AGP utilisant le même mécanisme d'adressage que les cartes PCI, on utilisera la syntaxe suivante :

"PCI:bus:périphérique:fonction"
bus est le numéro du bus PCI sur lequel se trouve la carte graphique, périphérique est le numéro du périphérique sur ce bus, et fonction est le numéro de la fonction à utiliser pour accéder à ce périphérique. Vous pouvez utiliser la commande lspci pour afficher les caractéristiques des différents bus PCI de votre machine et déterminer les valeurs utilisées par vos cartes graphiques.

Certaines cartes graphiques haut de gamme disposent de plusieurs contrôleurs vidéo et sont donc capables de gérer plusieurs écrans. Pour ces cartes graphiques, le principe de fonctionnement est le même : il faut écrire une section « Device » pour chaque contrôleur vidéo existant. Cependant, étant donné que toutes ces sections s'adressent à la même carte graphique, il est impossible de les distinguer par l'intermédiaire de l'option « BusID ». Dans ce cas, on utilise alors l'option « Screen », suivie du numéro du contrôleur vidéo que la section décrit. Ce numéro doit être donné juste après l'option « Screen », sans guillemets. La numérotation des contrôleurs vidéo commence à 0. C'est cette valeur qui est utilisée pour toutes les cartes graphiques ne disposant que d'un seul contrôleur vidéo.

10.2.4.7. Sections « Monitor »

Les sections « Monitor » contiennent les informations descriptives des écrans. Notez qu'il est possible de définir plusieurs sections « Monitor », pour plusieurs écrans potentiels. Cependant, chaque section « Screen » devra utiliser un moniteur et un seul.

Les sections « Monitor » sont certainement les sections les plus importantes du fichier XF86Config. Elles contiennent en effet toutes les informations concernant les moniteurs et tous les paramètres des modes graphiques utilisés par ces moniteurs. Ces informations sont utilisées par le serveur X pour programmer les signaux vidéo que la carte graphique envoie au moniteur. Il est donc évident que chaque section « Monitor » est spécifique à un modèle de moniteur donné, et que la détermination des valeurs qui doivent y être écrites requiert une bonne connaissance du fonctionnement de ce moniteur et de ses caractéristiques physiques. Vous trouverez une description générale du fonctionnement des moniteurs dans les paragraphes qui suivent. Il est impératif de bien les assimiler si vous désirez créer ou modifier une section « Monitor », car si les informations qui y sont stockées sont erronées, le moniteur correspondant risque d'être gravement endommagé.

Le principe de fonctionnement des tubes cathodiques utilisés dans les moniteurs est très simple : à chaque instant, un faisceau d'électrons généré par un canon à électrons vient frapper un point d'une plaque phosphorescente située juste derrière la vitre du moniteur. L'énergie cinétique des électrons du faisceau est transformée en lumière par le phosphore en ce point, qui reste ainsi lumineux tant que le faisceau frappe ce point. Comme un seul faisceau est utilisé pour tous les points de la plaque phosphorescente, il faut déplacer le faisceau de point en point pour pouvoir tous les éclairer. Cela a bien entendu pour conséquence que les points ne restent lumineux que pendant un temps très court. Cependant, nous percevons la luminosité de ce point pendant un temps beaucoup plus long, en raison de la rémanence des cellules de l'½il. Les points de l'écran semblent donc être tous allumés en même temps, bien qu'à chaque instant un seul d'entre eux est atteint par le faisceau d'électrons. Nous voyons ainsi l'image complète du moniteur.

Le déplacement du faisceau d'électrons est assuré par un champ magnétique généré par des bobinages magnétiques à l'arrière du tube cathodique. Le faisceau balaye l'écran ligne par ligne, de gauche à droite (en regardant le moniteur de face). À chaque fois qu'il atteint le bord gauche, il retourne rapidement vers le début de la ligne suivante, sur le bord droit du moniteur. Ce retour se fait simplement en modifiant brusquement le champ magnétique qui dirige le faisceau. Il va de soi que le faisceau d'électrons est coupé pendant ce retour de balayage, car s'il ne l'était pas, on le verrait traverser l'écran de droite à gauche et perturber ainsi l'image. De plus, le champ magnétique n'est pas facilement contrôlable lorsque le retour du faisceau commence. Par conséquent, il est nécessaire que ce retour se fasse un certain temps après que le bord droit ait été éteint. Si ce n'était pas le cas, l'image serait déformée près des bords du moniteur. Le faisceau électronique continue donc de balayer l'écran sur une petite zone après le bord de l'image, sans émettre de lumière. Cette zone s'appelle le « blanking » horizontal.

De même, le faisceau électronique retourne rapidement en haut de l'écran dès qu'il en atteint le bas. Pour les mêmes raisons que pour les retours de balayage horizontal, le faisceau doit être éteint un peu avant et pendant la modification du champ magnétique lors des retours de balayage vertical. La zone ainsi parcourue par le faisceau après le bord de l'image s'appelle le « blanking » vertical.

Note : Il est possible d'utiliser d'autres méthodes de balayage que celle décrite ci-dessus. En particulier, les modes graphiques entrelacés ne suivent pas ce principe. Dans ces modes, seulement une ligne sur deux est balayée à chaque génération d'image. Les lignes paires sont d'abord affichées pour une première image, puis les lignes impaires sont affichées pour l'image suivante. Ces modes graphiques étaient utilisés lorsque les moniteurs n'étaient pas suffisamment rapides pour afficher une image complète sans que l'on puisse voir le balayage du faisceau d'électrons. De nos jours, il est déconseillé d'utiliser ces modes, car l'image a tendance à trembler du fait de l'écart de luminosité alternatif entre les lignes paires et impaires de l'écran.

Les limitations techniques de la technologie des tubes cathodiques imposent une limite supérieure pour la vitesse de balayage, et une limite inférieure pour la durée des retours de balayage horizontal et vertical, ainsi que pour la durée minimale du blanking. Les caractéristiques techniques des tubes sont donc souvent spécifiés en terme de fréquences de balayage et de durées des signaux de synchronisation. Les vieux moniteurs ne pouvaient supporter qu'un nombre limité de fréquences de balayage, que l'on qualifiaient alors de « fixes ». De nos jours, les écrans multisynchrones acceptent toutes les fréquences comprises dans une plage de valeur, et s'adaptent donc aux fréquences des signaux émis par les cartes graphiques.

La fréquence de balayage vertical utilisée dans un mode graphique donné constitue le taux de rafraîchissement de l'écran, c'est-à-dire le nombre de fois que l'image de l'écran est affichée par seconde. Il est évident qu'un taux de rafraîchissement trop faible ne permet pas d'avoir une image agréable à regarder, car elle semble trembler ou clignoter. Un tube cathodique de bonne qualité est donc un tube qui permet d'utiliser de hautes fréquences verticales. Comme il est nécessaire d'afficher toutes les lignes pour afficher une image complète, il va de soi qu'un bon tube doit également être capable d'afficher les lignes rapidement, et donc accepter des fréquences de balayage horizontal élevées. Typiquement, les fréquences de balayage horizontal sont environ mille fois plus élevées que les fréquences de balayage vertical, puisque chaque ligne peut contenir environ mille pixels.

La sensibilité au taux de rafraîchissement dépend des personnes et de l'emploi que l'on fait du tube. Les tubes destinés à être regardés de loin peuvent utiliser des fréquences beaucoup plus faibles que les tubes de proximité. Ainsi, les télévisions affichent 25 images par seconde (en fait, elles affichent 50 demi-images par seconde, car elles utilisent l'entrelacement). En revanche, ce taux de rafraîchissement est très insuffisant pour les moniteurs d'ordinateurs, où la limite inférieure est de 60 Hz. Le standard VESA exige des taux de 72 Hz ou plus pour que l'image soit agréable à regarder, mais de nombreux écrans supportent facilement 85 Hz ou plus de nos jours. Certaines personnes ne sont cependant pas dérangées par des taux aussi faibles que 60 Hz. Il est bon de savoir quel taux de rafraîchissement vous convient, car un balayage insuffisant peut fatiguer vos yeux, même sans que vous en soyez conscient. Et cette fatigue se traduit toujours un jour ou un autre par des maux de tête inexpliqués... Ne vous vantez donc pas de voir le balayage, c'est un grave handicap par rapport à ceux qui ne le voient pas et qui donc ont moins de maux de tête que vous !

Vous pouvez utiliser la méthode suivante pour déterminer si le taux de rafraîchissement est suffisant pour vous. Commencez par afficher une image blanche sur la totalité de la surface visible de votre moniteur. Puis réglez la luminosité du moniteur à son maximum. Placez-vous ensuite de biais par rapport à votre moniteur, et regardez en face de vous. Concentrez ensuite votre attention sur l'image de l'écran, sans le regarder directement (regardez-le « en coin »). Normalement, vous devez percevoir l'image avec les cellules latérales de la rétine, qui donnent une image moins précise que les cellules centrales, mais qui sont plus sensibles aux mouvements (ces cellules nous servent en quelque sorte d'antennes). Ces cellules sont donc plus aptes à percevoir les variations rapides de luminosité de l'image dues au balayage du faisceau électronique. Si l'image semble clignoter, c'est que le taux de rafraîchissement de l'écran est insuffisant. Sinon, vous tenez le bon taux, ne le lâchez pas.

Certaines caractéristiques techniques des tubes cathodiques influent sur les autres et permettent donc de modifier le taux de rafraîchissement. Il est évident que si la durée du retour du faisceau est importante, l'écran ne peut pas générer beaucoup d'images par seconde. Par conséquent, plus la durée du retour de balayage est longue, moins bon peut être le taux de rafraîchissement. Il en va de même pour la durée du blanking. Les bons écrans disposent donc souvent de retours de balayage rapides et de courtes durées de blanking. Mais diminuer ces durées nécessite une électronique plus précise au niveau du contrôle des champs magnétiques dirigeant le faisceau d'électrons. Il est également évident que la résolution du mode graphique influe sur le taux de rafraîchissement. Si la résolution est élevée, il y a plus de pixels à afficher au total sur chaque ligne de l'écran. À vitesse de balayage des pixels fixée, le temps nécessaire pour balayer une ligne est donc plus grand. Et comme il y a plus de lignes à afficher, le temps nécessaire pour générer une image complète est plus grand, et le taux de rafraîchissement est plus faible. Donc, si le test décrit dans le paragraphe précédent vous indique que votre taux de rafraîchissement est trop faible, vous pouvez tenter de baisser la résolution.

Note : Notez que la profondeur de couleur utilisée n'intervient absolument pas dans le taux de rafraîchissement. Cette profondeur n'est un facteur limitant qu'au niveau de la carte graphique, qui peut ne pas avoir assez de mémoire pour afficher un mode de grande résolution avec toutes les couleurs désirées ou ne pas avoir une électronique assez rapide pour traiter toutes les données à une vitesse raisonnable.

Le signal vidéo émis par la carte graphique contient toutes les informations dont le moniteur a besoin pour générer l'image. Ces informations spécifient bien entendu l'intensité du faisceau d'électrons, mais aussi les signaux de synchronisation qui contrôlent les retours de balayage horizontal et vertical. Ce sont les informations de synchronisation que les sections « Monitor » du fichier XF86Config contiennent. On comprend donc l'importance de ces informations pour la qualité de l'image, aussi bien en terme de stabilité qu'en termes de taux de rafraîchissement.

Les sections « Monitor » sont constituées grosso modo de deux parties. La première partie contient les caractéristiques générales de l'écran, telles que son nom, son modèle et le nom de son fabricant. Elle contient également les plages de fréquences de balayage horizontal et vertical. La deuxième partie contient les définitions des modes graphiques, à raison d'une ligne par mode graphique utilisable. La documentation de XFree86 appelle ces lignes des « lignes de mode » (« modelines » en anglais). Il est évident que les informations fournies dans les lignes de mode sont très sensibles, et déterminent tous les paramètres du mode graphique : résolution, position et taille de l'image sur l'écran, taux de rafraîchissement.

La première partie d'une section « Monitor » ressemble à ceci :

Section "Monitor"
    Identifier "Moniteur 1"
# Marque et modèle du moniteur (informations facultatives) :
    VendorName "SONY"
    ModelName     "MULTISCAN 100ES"
# Plage de fréquence horizontale (information capitale) :
    HorizSync     30-70
# Plage de fréquence verticale (information capitale) :
    VertRefresh   50-120

Le mot clé « Identifier » permet de donner un nom à la section « Monitor ». Ce sera ce nom que l'on utilisera plus loin dans la section « Screen » pour indiquer que l'on désire utiliser ce moniteur. Les mots clés « VendorName » et « ModelName » permettent de donner la description du moniteur. Les informations stockées ici n'ont aucun effet sur la configuration du moniteur et sont simplement indicatives. En revanche, les plages de fréquences horizontales et verticales indiquées respectivement après les mots clés « HorizSync » et « VertRefresh » sont d'une importance capitale. Elles donnent les plages de fréquences auxquelles le moniteur peut travailler, et servent à contrôler la validité des lignes de mode données dans la deuxième partie de la section « Monitor ». Il est donc important de donner ici les valeurs exactes, que vous trouverez normalement dans la fiche technique de votre moniteur (cette fiche est souvent imprimée à la fin du mode d'emploi). Pour les moniteurs multisynchrones, les plages de fréquences utilisables peuvent être données par leurs fréquences minimale et maximale, séparées d'un tiret. Les fréquences fixes peuvent être spécifiées simplement avec une seule valeur. Il est possible de spécifier plusieurs fréquences fixes et plusieurs plages de fréquences en les séparant par des virgules. L'unité utilisée pour les fréquences horizontales est le kilohertz, et celle utilisée pour les fréquences verticales est le Hertz.

La deuxième partie de la section « Monitor » contient les lignes de mode, à raison d'une ligne de mode par mode graphique que le moniteur est capable d'afficher. En général, une ligne de mode ressemble à ceci :

Modeline "1024x768" 92.96 1024 1064 1240 1352 768 768 778 802

mais il existe cette une autre syntaxe, beaucoup plus claire car elle différencie les différentes valeurs données dans la ligne précédente :

Mode "1024x768"
    DotClock 92.96
    HTimings 1024 1064 1240 1352
    VTimings 768 768 778 802
EndMode

La première valeur indiquée entre guillemets dans les lignes de mode est le nom du mode graphique. Comme on le verra plus tard, c'est ce nom qui est utilisé pour spécifier les modes graphiques utilisables dans la section « Screen ». La deuxième valeur est la fréquence de base des signaux émis par la carte graphique. Cette vitesse est exprimée en MHz et représente le nombre de pixels par seconde que le faisceau électronique du moniteur balaye. Les quatre valeurs suivantes fixent les paramètres horizontaux du mode graphique : résolution horizontale, pixel à partir duquel le signal de synchronisation pour le retour de balayage horizontal commence, pixel auquel ce signal s'arrête et longueur totale de la ligne en pixel, blanking compris. De même, les quatre dernières valeurs fixent les paramètres verticaux du mode graphique, à savoir résolution verticale, ligne de début et ligne de fin du signal de synchronisation pour le retour de balayage vertical, et nombre de lignes total du mode graphique. On notera que les informations concernant le signal de synchronisation du balayage horizontal sont toutes multiples de 8. Cette contrainte est imposée par le matériel de la plupart des cartes graphiques. D'autre part, l'unité utilisée pour ces valeurs est le pixel. Il faut donc se baser sur la fréquence de base indiquée au début de la ligne de mode pour les convertir en temps. Les informations concernant le signal de synchronisation vertical, quant à elles, sont exprimées en nombre de lignes. Elles peuvent ne pas être multiples de 8. La conversion en temps se calcule cette fois à partir de la fréquence de base et de la longueur totale d'une ligne horizontale pour ce mode graphique. Enfin, il est possible de rajouter des options complémentaires à la fin des lignes de mode pour préciser le fonctionnement du mode graphique, à l'aide du mot-clef « Flags ». L'option la plus courante étant sans aucun doute « Interlace », qui permet de créer des modes entrelacés. L'option « Doublescan » quant à elle permet de faire en sorte que chaque ligne est affichée deux fois de suite. Elle permet de créer des modes graphiques de faible résolution, qui utilisent des fréquences de balayage trop faibles pour les moniteurs actuels. Vous pourrez trouver les autres options dans la page de manuel XF86Config.

La section « Monitor » se termine, comme toute section du fichier XF86Config, par une ligne de fin de section :

EndSection

Comme vous vous en êtes aperçu, les données stockées dans les lignes de mode sont assez techniques. Quelques explications complémentaires ne seront donc pas de trop pour comprendre l'influence de ces paramètres et pour créer de nouvelles lignes de mode.

Pour commencer, la fréquence de base de la ligne de mode doit évidemment être gérée par la carte graphique. Vous pouvez déterminer la fréquence de base maximale en regardant les informations affichées par le serveur X adapté à cette carte lorsqu'il démarre. Cette information est toujours juste, même si les lignes de mode écrites dans votre fichier XF86Config ne conviennent pas et que le serveur X ne démarre pas correctement. La ligne contenant cette fréquence maximale est semblable à celle-ci :

Maximum allowed dot-clock: 163.000 MHz

Cette fréquence de base peut être générée par la carte graphique, mais il n'est pas certain qu'elle soit supportée par le moniteur. En effet, les moniteurs ne sont pas capables de gérer les fréquences de base au delà d'une certaine limite. La gamme de fréquences qu'ils acceptent est ce que l'on appelle leur bande passante. La fréquence de base doit donc être dans cette bande passante, c'est-à-dire qu'elle doit être inférieure à la fréquence maximale que le moniteur peut gérer. La bande passante de votre moniteur est normalement indiquée dans sa fiche de spécifications techniques. Si toutefois ce n'est pas le cas, vous pouvez vous faire une idée de la fréquence la plus élevée de cette bande passante en regardant la résolution maximale qu'il peut afficher et en consultant ce tableau :

Tableau 10-1. Fréquence maximale des moniteurs

RésolutionFréquence maximale
640x48025
800x60036
10254x76865
1280x1024110
1600x1200185

Les valeurs des fréquences indiquées dans ce tableau sont les plus petites valeurs constatées pour l'ensemble des moniteurs gérés par XFree86. On peut donc supposer que votre moniteur gère ces fréquences, et certainement même de plus hautes.

La résolution du mode graphique est donnée par la première des quatre valeurs des paramètres horizontaux et verticaux dans la ligne de mode. Ainsi, dans la ligne de mode exemple donnée ci-dessus, la résolution horizontale est de 1024 et la résolution verticale est de 768. Sachez que vous êtes parfaitement libre d'utiliser des résolutions non standards, en écrivant les lignes de mode correspondantes. Dans l'exemple donné ci-dessus, il s'agit simplement du mode graphique 1024x768. Notez, encore une fois, que la profondeur de couleur n'intervient absolument pas dans les paramètres du moniteur. Ils n'interviennent que dans les composants de la carte graphique qui sont chargés de générer les signaux vidéos pour le moniteur.

La quatrième valeur des paramètres horizontaux donne la longueur totale des lignes physiques dans ce mode. Cette longueur comprend bien entendu la partie visible de l'image, mais également la partie due au blanking horizontal. Rappelons que le blanking est la partie balayée par le faisceau alors qu'il est éteint, ce qui comprend la partie balayée pendant la durée du signal de synchronisation horizontal. Dans l'exemple donné ci-dessus, le blanking a une longueur égale à 1352-1024 pixels, soit 328 pixels. La quatrième valeur des paramètres verticaux fixe de même le nombre de lignes total du mode, en tenant compte des lignes du blanking vertical.

Comme vous pouvez le constater dans la ligne de mode exemple, le pixel auquel le signal de synchronisation commence n'est pas le dernier pixel visible. En effet, il y a 40 pixels d'écart entre le dernier pixel visible (en l'occurrence, le pixel 1024) et le pixel auquel le signal de synchronisation horizontal commence (le pixel 1064). Cet espace fait partie du blanking, il sert de marge pour éviter les perturbations dues au retour de balayage et pour positionner l'image sur l'écran. Cette zone noire se trouve au delà du bord droit de l'image affichée. Elle est suivie par la zone qui serait balayée pendant la durée du retour de balayage si le faisceau poursuivait sa route au lieu de revenir sur le bord gauche. Cette zone se termine au pixel indiqué par la troisième valeur (1240 dans notre exemple). Ce pixel est donc toujours positionné sur le point le plus à droite que le moniteur peut afficher. Par conséquent, la taille de la partie du blanking situé à la droite de l'image est égale au numéro du pixel où le signal de synchronisation horizontal se termine moins le nombre de pixels affichés. Dans notre exemple, cette partie de blanking a une taille de 1240-1024 pixels, soit 216 pixels. La taille de la partie du blanking horizontal situé à la gauche de l'écran est donc logiquement égale à la longueur totale de la ligne (1352) moins le pixel où le signal de synchronisation se termine (1240), ce qui donne 112 pixels. Vous voyez ainsi que l'on peut décaler l'image vers la gauche en augmentant les valeurs de départ et de fin du signal de synchronisation. Inversement, on peut décaler l'image vers la droite en diminuant ces valeurs.

Le même raisonnement peut être appliqué aux paramètres verticaux du mode graphique. Le blanking vertical comprend les lignes balayées avant et après le signal de synchronisation, ainsi que les lignes balayées pendant le temps où ce signal est généré. La dernière ligne de ce signal est, encore une fois, la ligne la plus basse que le moniteur peut afficher. On peut donc déplacer l'image vers le haut ou vers le bas en jouant sur les valeurs de départ et de fin du signal de synchronisation vertical dans les paramètres verticaux du mode graphique.

Figure 10-3. Paramètres des lignes de mode

En augmentant le nombre de pixels physiques pour chaque ligne et en conservant la même résolution, la largeur de l'image visible est réduite. En effet, la proportion de la partie visible de l'image sur la largeur totale de l'écran est d'autant plus faible que le nombre de pixels physiques des lignes est grand. Le même raisonnement peut être appliqué sur les paramètres verticaux. L'image peut donc être agrandie ou réduite horizontalement et verticalement en jouant sur la longueur totale des lignes et sur la hauteur totale de l'image. Si l'on veut que l'image reste centrée, il faut également décaler les points de début et de fin des signaux de synchronisation, pour que la proportion du blanking placée de part et d'autre de l'image reste constante.

Il faut bien comprendre que la modification des paramètres de synchronisation et de la longueur totale de la ligne est soumise à de fortes contraintes. Il faut s'assurer que les durées des signaux de synchronisation et du blanking restent dans les limites de ce que peut accepter le moniteur. De plus, le nombre de points balayés au total est évidemment le produit de la longueur totale des lignes et du nombre de lignes total du mode. À fréquence de base fixe, cela revient à définir le taux de rafraîchissement, puisque plus il y a de pixels à balayer dans chaque image, moins il est possible d'afficher d'images par seconde. Cela n'est pas gênant si vous pouvez augmenter la fréquence de base. Par contre, si vous avez atteint la limite de votre carte graphique, ou la limite de bande passante de votre moniteur, vous serez limité dans le taux de rafraîchissement si vous devez réduire les dimensions de l'image affichée.

Vous devez vous en doutez à présent : l'écriture d'une ligne de mode est un sport très difficile. La technique à utiliser est itérative. Vous pouvez tourner en rond pendant un certain temps, si vous ne savez pas vous y prendre. La première des choses à faire est de choisir la dimension de l'image que vous désirez obtenir. Cette dimension va fixer la largeur totale et le nombre de lignes total qui seront utilisés pour ce mode graphique. Vous pouvez toujours partir des lignes de mode utilisées pour les modes graphiques VESA pour un moniteur semblable au vôtre. Une fois que vous aurez ces valeurs, vous pourrez essayer de faire monter le taux de rafraîchissement en augmentant la fréquence de base. Vous aurez peut-être à redimensionner et à recentrer l'image sur le moniteur. Les quatre contraintes à respecter lorsque vous augmentez la fréquence de base sont bien entendu la durée du blanking horizontal et vertical, la durée des signaux de synchronisation et les plages de fréquences horizontales et verticales acceptées par votre moniteur. Il est probable que vous aurez à accroître l'écart entre les valeurs de début et de fin des signaux de synchronisation, car leur durée peut baisser dangereusement lorsque la fréquence de base augmente. Malheureusement, cela peut vous limiter dans la possibilité de centrer l'image sur votre moniteur. Une image dont les bords ne sont pas rectilignes ou pas nets est un signe indiquant que le signal de synchronisation n'est pas suffisamment long. Si vous ne vous en sortez pas, c'est que vous essayez d'atteindre un taux de rafraîchissement trop élevé.

Si vous désirez fabriquer un mode graphique de résolution non standard, vous ne trouverez pas forcément une ligne de mode pouvant servir de point de départ. Dans ce cas, il va vous falloir créer cette ligne de mode ex-nihilo. Vous trouverez dans le fichier de documentation VideoModes.doc de XFree86 les explications permettant de créer une ligne de mode correcte à partir des caractéristiques de votre moniteur. Pour les moniteurs multisynchrones, la technique suivante peut être utilisée.

La première étape est de trouver la bande passante de votre moniteur et les plages de fréquences horizontales et verticales utilisables par votre moniteur. Ces données sont très souvent fournies dans la documentation du moniteur. Par exemple, pour un moniteur Sony Multiscan 100ES, ces plages de fréquences sont les suivantes :

 Horizontales (kHz)Verticales (Hz)
Fréquence minimale3050
Fréquence maximale70120

La deuxième étape est de choisir la résolution que l'on désire utiliser. Supposons que l'on veuille utiliser une résolution intermédiaire entre 1024x768 et 800x600 sur ce type d'écran 15 pouces. Prenons par exemple 904x678. Notez que la résolution horizontale est divisible par 8, et que la résolution verticale est égale aux trois quarts de cette dernière. Ce rapport permet simplement de conserver la proportion de 4/3 des écrans d'ordinateurs. Pour pouvez cependant choisir un autre rapport si vous le désirez.

Vous devez ensuite déterminer les longueurs totales des lignes en pixels et le nombre total de lignes, blanking compris. C'est cette partie qui est la plus difficile, elle nécessite de connaître les durées minimales des signaux de synchronisation horizontaux et verticaux. Ces données sont hélas rarement fournies par les fabricants. Heureusement, on peut s'en passer en pratique, car tous les écrans cathodiques utilisent la même technologie. En général, la longueur totale d'une ligne est égale à la résolution horizontale divisée par 0,8, et le nombre total de lignes est égal à la résolution verticale augmentée de 5%. Pour notre mode graphique, le calcul est donc le suivant :

longueur totale des lignes = 904 pixels / 0,8 = 1130 pixels
hauteur totale de l'image = 678 lignes * (1+5/100) =
    678 lignes * 1,05 = 711,9 lignes.

La longueur totale des lignes n'est pas multiple de 8, nous devons donc l'arrondir à 1136. De même, la hauteur totale de l'image doit être arrondie à 712 lignes.

Nous disposons à présent des premières et dernières valeurs des paramètres horizontaux et verticaux de la ligne de mode. Les paramètres intermédiaires, qui fixent le début et la fin des signaux de retour de balayage, doivent être choisis de telle sorte que ces signaux commencent un peu après le début du blanking et se terminent un peu avant le début de la génération de l'image suivante. En pratique, on peut couramment considérer qu'une marge de 32 à 40 pixels est suffisante pour les signaux de synchronisation horizontaux, et qu'il faut 0 à 10 lignes pour les signaux de synchronisation verticaux. L'écart entre le début et la fin de ces signaux doit être suffisamment grand pour garantir leurs durées minimales exigées (mais a priori inconnues) par votre moniteur. Dans notre exemple, nous pouvons donc choisir les paramètres suivants :

    HTimings 904 944 1096 1136
    VTimings 678 683 707 712

Il reste à déterminer la fréquence de base à utiliser. Le but est bien entendu d'obtenir le taux de rafraîchissement le plus élevé possible, donc la fréquence de base la plus élevée, tout en restant dans les limites de la carte graphique et du moniteur. La contrainte la plus forte en générale est la fréquence maximale de balayage horizontal.

Dans notre cas, l'écran est capable de travailler à 70 kHz au plus, c'est-à-dire d'afficher 70000 lignes par seconde. Comme notre mode graphique utilise 712 lignes physiques au total, cela nous donne un taux de rafraîchissement de 70000/712, soit environ 98 images par seconde. Bien entendu, il faut contrôler que cette fréquence est bien dans la plage de fréquences verticales du moniteur. C'est bien le cas ici, puisqu'il peut supporter des fréquences allant jusqu'à 120 Hz. En général, il faut prendre la plus petite de ces valeurs comme taux de rafraîchissement initial.

Une fois le taux de rafraîchissement déterminé, nous devons calculer la fréquence de base à utiliser. Pour afficher 98 images de 710 lignes de 1125 pixels par seconde, nous calculons cette fréquence de la manière suivante :

98 * 712 * 1136 = 79,26 MHz

Encore une fois, il faut contrôler que la carte graphique peut générer un signal de cette fréquence et que celle-ci est bien inférieure à la bande passante du moniteur. Dans le cas contraire, il faudrait encore une fois se limiter à la plus petite de ces valeurs. La plupart des cartes graphiques récentes peuvent monter au moins jusqu'à 150MHz, et l'écran Sony Multiscan 100ES a une bande passante bien supérieure à cette valeur. Nous pouvons donc conserver cette fréquence de base, et obtenons donc la ligne de mode suivante :

Mode "904x678"
    DotClock 79.26
    HTimings 904 944 1096 1136
    VTimings 678 683 707 712
EndMode

Cette ligne de mode a peu de chances d'être satisfaisante sans retouches, mais elle peut servir de point de départ pour la recherche de la ligne de mode idéale. En général, les paramètres étant choisis proches de l'optimum, l'image sera bien trop grande ou déformée sur les bords. Vous devrez donc faire des ajustements manuels pour vous rapprocher, petit à petit, d'une ligne de mode utilisable. Vous pourrez utiliser l'utilitaire xvidtune pour cela. Cet utilitaire est un utilitaire fourni avec XFree86, qui permet de modifier les dimensions et la position de l'image interactivement. Cet utilitaire fonctionne directement sous XWindow, et permet donc d'avoir un aperçu de l'image avec les paramètres modifiés. Vous trouverez une description plus détaillée de la manière d'utiliser xvidtune dans la Section 10.2.6.

Seul le redimensionnement de l'image modifie le nombre total de lignes et leur longueur totale. En particulier, la réduction de la taille de l'image accroît la taille totale des lignes et leur nombre, ce qui entraîne la baisse du taux de rafraîchissement. À chaque fois que vous réduisez l'image, vous pourrez recalculer le taux de rafraîchissement et la fréquence de base nécessaire pour atteindre ce taux, tout en veillant à ne dépasser ni les limites de votre carte graphique, ni celles de votre moniteur.

Ainsi, après quelques modifications de la ligne de mode dans xvidtune et réajustements de la fréquence de base, la ligne de mode suivante peut être obtenue :

Mode "904x678"
    DotClock 79.82
    HTimings 904 920 1104 1144
    VTimings 678 679 710 712
EndMode

Cette ligne de mode permet d'obtenir un affichage correct en 904 par 678, avec un taux de rafraîchissement de 97.99 Hz, ce qui est plus qu'honorable. On constate que la première ligne de mode utilisait une durée de balayage vertical trop petite, ce qui provoquait des déformations sur les bords de l'image.

Si vous voulez approfondir le sujet, vous pouvez lire les formules mathématiques donnant les relations entre les différents paramètres techniques influant sur la génération des images dans l'Annexe C. Ces formules sont données à titre indicatif, elles ne vous donneront pas les caractéristiques techniques de votre écran. Encore une fois, je ne saurais trop vous recommander d'utiliser les outils fournis avec votre distribution...

10.2.4.8. Sections « Modes »

Généralement, les lignes de mode sont définies pour un moniteur donné, car l'apparence de l'image dépend des caractéristiques physiques de chaque moniteur. Par conséquent, ces lignes sont définies la plupart du temps dans les sections « Monitor ». Cependant, il peut être utile de regrouper toutes les lignes de mode d'un type de moniteur donné dans une section à part, afin de structurer et d'organiser le fichier XF86Config.

Pour cela, on écrira des sections « Modes », qui n'auront donc pas d'autre rôle que de contenir une ou plusieurs lignes de mode, et qui seront référencées dans les sections « Monitor » des moniteurs qui désirent utiliser ces lignes de mode. L'intérêt de regrouper toutes les lignes de mode dans une section « Modes » apparaît clairement dès que plusieurs sections « Monitor » utilisent les mêmes lignes de mode. Ce peut être le cas pour des moniteurs d'un même fabricant ou possédant des caractéristiques techniques similaires.

Le format des sections « Monitor » est très simple, puisqu'elles ne contiennent qu'un identificateur, introduit comme à l'accoutumée par le mot-clef « Identifier » suivi du nom de la section entre guillemets, et les lignes de mode elles-mêmes. La syntaxe de ces lignes est exactement la même que celle qui est utilisée dans la section « Monitor » et ne sera donc pas décrite plus en détail ici. Vous trouverez ci-dessous un exemple de section « Modes » :

# Exemple de section Modes :
Section "Modes"
    Identifier "Modes Standards"
    Modeline "640x480"    50.00 640 656 720 832 480 480 489 501
    Modeline "800x600"    72.80  800 816 928 1040 600 600 610 626
    Modeline "1024x768"  92.00 1024 1076 1252 1344 768 772 782 806
EnsSection

10.2.4.9. Sections « Screen »

Les sections « Screen » permettent de regrouper les moniteurs et les cartes graphiques pour effectuer l'affichage des écrans d'un display, et d'indiquer les modes graphiques que l'on désire utiliser parmi tous les modes que le moniteur indiqué sait gérer, pour chaque profondeur de couleur.

Les sections « Screen » sont, comme les sections « Monitor », constituées de deux parties. La première partie spécifie les informations générales de l'écran, à savoir essentiellement la carte graphique et le moniteur à utiliser. La deuxième partie quant à elle permet de préciser, pour chaque profondeur de couleur utilisable avec cet écran, les résolutions des modes graphiques utilisables ainsi que les paramètres des résolutions virtuelles. Voici trouverez ci-dessous un exemple de section « Screen » :

Section "Screen"
    Identifier "Ecran 1"
    Device      "Carte 1"
    Monitor     "Moniteur 1"
    DefaultDepth 24
    SubSection "Display"
        Depth  24
        Modes  "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Depth  16
        Modes  "1024x768" "800x600" "640x480"
    EndSubSection
    SubSection "Display"
        Depth  8
        Modes  "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

L'option « Identifier » permet, comme d'habitude, de nommer la section « Screen » courante. Le nom doit être indiqué entre guillemets, à la suite du mot clé « Identifier ». C'est ce nom qui sera utilisé dans les sections « ServerLayout » pour référencer les écrans du display. Le mot-clef « Device » indique la section « Device » à utiliser pour obtenir les informations sur la carte graphique qui gère l'affichage de cet écran. Il doit être suivi du nom qui a été spécifié après le mot-clef « Identifier » dans la section « Device » correspondante. De même, le mot-clef « Monitor » indique la section « Monitor » à utiliser pour obtenir les informations sur le moniteur courant. Enfin, le mot-clef « DefaultColorDepth » indique la profondeur de couleur utilisée par défaut au démarrage de XWindow. Comme nous le verrons plus loin, une autre profondeur de couleur que celle-ci pourra être utilisée en passant un argument sur la ligne de commande du serveur X.

Comme vous pouvez le voir, la section « Screen » contient une ou plusieurs sous-sections « Display ». Ce sont ces sous-sections qui indiquent les paramètres de l'écran spécifiques à chaque profondeur de couleur utilisable. Les sous-sections « Display » contiennent les informations suivantes :

  • la profondeur de couleur considérée, exprimée en bits par pixels après le mot-clef « Depth » ;

  • la liste des modes graphiques utilisables avec cette profondeur de couleur, référencés par le nom de leur ligne de mode, après le mot-clef « Modes ». Plusieurs modes peuvent être spécifiés, en donnant leurs noms respectifs, séparés par des espaces.

  • des informations complémentaires concernant les résolutions virtuelles pour les modes dans lesquels la résolution logique de l'écran est supérieure à la résolution réellement utilisée. Ces paramètres indiquent la résolution logique de l'écran virtuel, ainsi que le positionnement de l'image affichée par l'écran physique dans cet écran virtuel. Vous trouverez de plus amples informations sur ces options dans la page de manuel XF86Config.

10.2.4.10. Sections « ServerLayout »

Le dernier type de section, qui regroupe toutes les informations des sections vues précédemment, est le type des sections « ServerLayout ». Comme leur nom l'indique, les sections de ce type fournissent les informations concernant la disposition des écrans d'un display. Cependant, dans la plupart des cas, les displays n'ont qu'un seul écran, et il est évident que la disposition de cet écran est triviale dans ce cas.

Il peut exister plusieurs sections « ServerLayout » dans le fichier XF86Config. En effet, ce fichier peut être utilisé par plusieurs serveurs X qui peuvent tourner simultanément sur la même machine (que l'on ait plusieurs cartes graphiques ou non). Chaque serveur X peut donc utiliser une section « ServerLayout ». La section utilisée par défaut est la première que le serveur X trouvera dans le fichier XF86Config, mais il est possible de lui demander d'en utiliser une autre à l'aide d'une option en ligne de commande. Toutefois, encore une fois, la plupart des machines ne disposent que d'un seul écran, et même si l'on lance plusieurs serveurs X, il n'y a ici besoin que d'une seule section « ServerLayout ».

Les sections « ServerLayout » indiquent surtout au serveurs X quels sont les périphériques d'entrée à utiliser (au moins un clavier et une souris) en plus de l'écran ou les écrans du display. Ce sont donc ces sections qui définissent complètement un display donné. L'exemple donné ci-dessous présente une section « ServerLayout » simple :

Section "ServerLayout"
    Identifier "Serveur 1"
    Screen "Ecran 1"
    InputDevice "Clavier 1" "CoreKeyboard"
    InputDevice "Souris 1" "CorePointer"
    Option "BlankTime" "5"
EndSection

Les sections « ServerLayout » disposent d'un nom qui permet de les identifier. Ce nom est le nom qui sera utilisé dans la ligne de commande du serveur X si plusieurs sections « ServerLayout » sont définies. Il doit être indiqué, comme d'habitude, à la suite du mot-clef « Identifier », entre guillemets.

Les sections « ServerLayout » doivent ensuite indiquer au moins un écran pour le display qu'elles décrivent. Les écrans sont introduits à l'aide du mot-clef « Screen », suivi de l'identificateur de la section « Screen » à utiliser. Si plusieurs écrans doivent être utilisés, il est possible de spécifier la position des écrans les uns par rapport aux autres à l'aide d'options complémentaires, qui sont spécifiées à la suite de l'identificateur de l'écran. Ces options permettent de positionner les écrans relativement les uns aux autres, ou de manière absolue en précisant leurs coordonnées dans le système de coordonnées de l'écran virtuel. Les options les plus simples à utiliser sont les options RightOf, LeftOf, Above et Below, qui permettent d'indiquer respectivement que l'écran courant est situé à droite, à gauche, au dessus ou en dessous de l'écran dont l'identificateur est spécifié juste après. Par exemple, si l'on veut rajouter un deuxième écran à la section précédente, et que cet écran doit être situé à droite du premier écran, on ajoutera simplement la ligne suivante :

    Screen "Ecran 2" RightOf "Ecran 1"

La section « ServerLayout » doit ensuite contenir au moins une référence à un clavier et une référence à un périphérique de pointage. Ces références sont introduites à l'aide du mot-clef « InputDevice », suivie de l'identificateur de la section « InputDevice » à utiliser. Le serveur X doit interpréter les événements provenant des différents périphériques d'entrée correctement. Il faut en particulier lui indiquer quels sont les périphériques principaux à l'aide de l'option CorePointer pour la souris principale et l'option CoreKeyboard pour le clavier principal. Seuls les périphériques d'entrée principaux seront utilisés en tant que clavier et en tant que souris.

Enfin, comme vous pouvez le voir dans l'exemple donné ci-dessus, il est possible d'utiliser des options spécifiques pour chaque section « ServerLayout ». Ces options sont les mêmes que celles utilisées dans la section « ServerFlags ». Vous pouvez donc ici spécifier une autre valeur que celles indiquées dans cette section, afin de préciser le comportement d'un serveur spécifique. Dans l'exemple donné ci-dessus, l'économiseur d'écran a été réglé pour s'activer au bout de 5 minutes.

10.2.5. Informations utilisées lors du démarrage de XFree86

Les informations stockées dans le fichier de configuration XF86Config sont utilisées par XFree86 pour déterminer la manière dont l'affichage doit se faire. Lorsque le serveur X démarre, il commence par rechercher la section « ServerLayout » qu'il doit utiliser pour déterminer les principales options du display. Par défaut, il utilisera systématiquement la première section « ServerLayout » du fichier XF86Config. Cependant, il est possible de lui demander d'en utiliser une autre, à l'aide de l'option de ligne de commande -layout, suivie de l'identificateur de la section à utiliser.

Le serveur X initialise alors tous les écrans du display et prend en charge les périphériques d'entrée. Pour chaque écran, il choisit la profondeur de couleur indiquée dans la variable « DefaultDepth » de la section « Screen » et tente de l'utiliser. Cependant, il est possible de choisir une autre profondeur de couleur à l'aide de l'option -depth, suivie de la profondeur de couleur à utiliser, spécifiée en bits par pixels. Remarquez que dans le cas des configurations à plusieurs écran, il n'est possible de spécifier qu'une seule profondeur de couleur. Il faut donc que toutes les sections « Screen » des écrans utilisés contiennent une sous-section « Display » pour la profondeur de couleur choisie.

Une fois la profondeur de couleur déterminée, le serveur X choisit pour chaque écran la première résolution indiquée dans la liste des modes de la sous-section « Display » dont la profondeur de couleur correspond à celle utilisée. Il tente alors de passer l'adaptateur graphique dans ce mode graphique, en utilisant pour cela la ligne de mode correspondante à cette résolution pour piloter le moniteur.

Il est possible, lorsque XWindow fonctionne, de changer cette résolution avec les combinaisons de touches CTRL+ALT+PLUS et CTRL+ALT+MINUS (PLUS et MINUS étant les touches + et - du pavé numérique). Ces deux combinaisons de touches permettent respectivement de passer d'une résolution à la suivante ou à la précédente dans la liste des modes spécifiés dans la sous-section « Display ». Pour chaque mode choisi, la ligne de mode correspondante à la résolution de ce mode est utilisée pour générer les signaux à destination du moniteur.

Note : La résolution virtuelle de l'écran n'est pas modifiée lorsqu'on change de résolution physique. Elle est toujours égale à la plus grande des résolutions disponibles dans la section « Display » utilisée. Seule la résolution physique de l'affichage est modifiée. Vous pourrez déplacer la zone d'affichage en déplaçant la souris, et faire défiler ainsi tout l'écran.

Il est impossible de changer la profondeur de couleur utilisée sans redémarrer le serveur X. Les seuls changements acceptés sont ceux concernant les résolutions graphiques listées dans la sous-section « Display » pour la profondeur de couleur courante.

10.2.6. Utilisation de xvidtune

xvidtune est un petit utilitaire permettant de régler les paramètres d'affichage de chaque mode graphique. Grâce à lui, vous pourrez ajuster la taille de l'image horizontalement et verticalement, ainsi que sa position par rapport aux bords du moniteur. xvidtune se lance simplement, en tapant son nom en ligne de commande :

xvidtune

Dès qu'il démarre, il commence par afficher une fenêtre d'avertissement, pour vous prévenir qu'un usage par une personne non avertie peut provoquer de sérieux dommages au moniteur. En effet, il permet de modifier les paramètres de synchronisation horizontale et verticale du moniteur pour ajuster l'image. Si vous choisissez de mauvais paramètres, vous pouvez sortir des spécifications techniques de votre moniteur, ce qui pourrait fort bien l'endommager. Fort heureusement, la plupart des moniteurs modernes disposent de mécanismes de sécurité qui les empêchent de générer l'image lorsque ces paramètres sont incorrects. Par conséquent, il est assez rare d'avoir des problèmes avec cet utilitaire, d'autant plus qu'il effectue des contrôles avant toute tentative douteuse. Vous pouvez donc valider en toute confiance, mais soyez malgré tout averti des risques potentiels. Rappelons que le serveur X peut être arrêté à n'importe quel moment à l'aide de la séquence de touches CTRL+ALT+BACKSPACE.

L'écran de xvidtune se compose de quatre parties. La partie supérieure gauche permet de régler les paramètres horizontaux du mode graphique, à savoir la largeur de l'image et sa position par rapport aux bords verticaux du moniteur. La partie supérieure droite permet de régler les paramètres verticaux, à savoir la hauteur et la position par rapport aux bords horizontaux du moniteur. La partie inférieure droite contient les informations essentielles sur le mode vidéo courant. Enfin, la partie inférieure gauche contient les boutons permettant de choisir les actions à effectuer.

Les paramétrages horizontaux et verticaux du mode graphique peuvent être modifiés très simplement. Les boutons « Left » et « Right » permettent de centrer l'image horizontalement, et les boutons « Wider » et « Narrower » permettent d'ajuster sa largeur. De même, les boutons « Up » et « Down » influent sur le centrage vertical, et les boutons « Shorter » et « Taller » ajustent sa hauteur.

Vous pouvez tester les modifications apportées à tout instant à l'aide du bouton « Test ». Il est même recommandé d'essayer régulièrement les paramètres choisis et de procéder pas à pas. Lorsque les paramètres conviennent, ils peuvent être appliqués immédiatement à l'aide du bouton « Apply ». Si vous désirez générer une ligne mode valide pour la configuration courante, par exemple afin de modifier votre fichier de configuration XF86Config, vous pouvez cliquer sur le bouton « Show ». La ligne de mode sera affichée sur le terminal à partir duquel vous avez lancé xvidtune. Vous pourrez alors la recopier dans le fichier XF86Config à la place de la ligne de mode du mode graphique en cours d'utilisation.

Il est possible de changer le mode graphique courant en cliquant sur les boutons « Next » et « Prev ». Ils permettent de passer en revue tous les modes graphiques qui ont été enregistrés dans le fichier XF86Config par XF86Setup. Une fois que vous aurez ajusté tous les modes graphiques et que vous les aurez enregistrés à l'aide du bouton « Apply », vous pourrez quitter xvidtune en cliquant sur le bouton « Quit ». Notez que le bouton « Apply » valide les choix en cours, mais ne les enregistre pas dans le fichier XF86Config. Vous devez reporter manuellement dans le fichier XF86Config les paramètres du mode courant, tels qu'ils sont présentés par la commande « Show ».