Introduction
Ceci est destiné aux nouveaux administrateurs système et utilisateurs
individuels qui se demandent comment obtenir une meilleure flexibilité dans le réglage
de sessions X personnalisées pour eux même et leur utilisateurs.
Cet article assume que le Système X Windows est déjà installé et est démarré par la commande
startx (la configuration de X pour plusieurs utilisateurs via XDM fera l'objet d'un autre article).
Passons d'abord en revue les principaux fichiers que seront décris et résumons brièvement ce qu'ils font...
xinitrc
xinitrc est un script passé à xinit par la commande startx. Ce script définit habituellement
des ressources globales (réglages de l'économiseur d'écran, définition du clavier, etc).
C'est le fichier qui cimente tout le processus de démarrage de X.
Xclients
C'est un fichier (avec un point) situé dans le répertoire de l'utilisateur qui démarre des
clients spécifiques à l'utilisateur à l'opposé de ceux appelés par xinitrc.
Xresources
C'est un fichier qui contient des définitions d'objets graphiques, des widgets,
qui sont prioritaires sur ceux par défaut des applications. Ce fichier est habituellement utilisé pour
préciser la taille des polices de caractère, les couleurs et l'aspect général mais il peut aussi
être utilisé pour obtenir des effets graphiques spectaculaires.
Maintenant que nous connaissons les principaux fichiers concernés, voyons comment
les configurer...
.xinitrc
Après avoir lancé la commande startx, xinint (qui est responsable du processus
de démarrage de X) évalue soit /etc/X11/xinit/xinitrc (global), soit s'il existe,
~/.xinitrc (local). Si ni l'un ni l'autre n'existe, le choix de la configuration
est fait par le processus xinit (à éviter). Le fichier xinitrc (le local est prioritaire sur le global)
est un script qui démarre les différents clients X spécifiés et utilise ensuite exec
pour lancer le gestionnaire de fenêtres.
Le plus simple des fichiers xinitrc ressemble à quelque chose comme ça...
# /etc/X11/xinit/xinitrc
#!/bin/sh
exec /usr/X11R6/bin/fvwm2
Ce fichier ne fait rien d'autre que d'exécuter le gestionnaire de fenêtres FVWM2 sans aucun
autre client. Pas très utile, mais pratique si vous voulez bricoler une configuration
pour un nouveau gestionnaire de fenêtres en un éclair. Les choses deviennent plus intéressantes
en ajoutant quelques réglages et le lancement de clients additionnels que nous voulons à chaque
démarrage de X...
#/etc/X11/xinit/xinitrc
#!/bin/sh
# régler ce problème pénible avec backspace
xmodmap -e "keycode 22=BackSpace"
# définir l'arrière plan
xsetroot -solid LightSlateGrey
# économiseur d'écran après cinq minutes
xset s 300
# clients à démarrer systématiquement
xterm -g 80x20+150+8 & # lance un terminal
xterm -g 80x20+150+325 & # Lance une 2ième fenêtre sous la 1ère
xload -g +4+0 & # lance un indicateur de charge cpu
xclock -g +815+0 -digital & # lance l'horloge digitale
# Lance le gestionnaire de fenêtres
exec fvwm2
Copie d'écran de la session X utilisant cette configuration
Nous avons maintenant un fichier qui règle le problème avec backspace (dans
la plupart des cas), active le verrouillage numérique, élimine cet horrible arrière plan
moiré et lance quelques programme à chaque démarrage de X.
Notez qu'un fichier local dans le répertoire de l'utilisateur
sera toujours utilisé s'il existe (ignorant complètement les réglages système).
Remarquez aussi l'option -g sur presque toutes les commandes. C'est l'option de géometrie
qui est disponible pour beaucoup de programmes X. Quand elle est utilisée, cette option spécifie
la taille et la position d'un programme sous la forme...
Longueur x Largeur + Coordonnée X + Coordonnée Y
La subtilité dans ce réglage, est que xterm (et la plupart des autres émulateurs de terminal)
spécifient la longueur et la largeur en termes de caractères alors que les autres programmes
utilisent les pixels pour ces valeurs (si vous ne faites pas attention, vous aurez des
fenêtres plutôt petites !). Enfin, faites attention aux "&" ajoutés à la fin de toutes les
commandes autres que celle qui lance le gestionnaire de fenêtres. Ces "&" ordonnent aux
programmes de s'éxécuter en arrière plan (sinon la commande suivante, ne s'éxecuterait
que si la précédente s'achève - ce qui n'est pas l'effet escompté). Ainsi, SEUL le gestionnaire
de fenêtres est lancé en avant plan et entraîne avec lui tous les processus lancés avec xinitrc
quand vous quittez X.
Nous avons maintenant un script assez fonctionnel qui peut être utilisé globalement ou
copié dans les répertoires des utilisateurs si nous voulons personnaliser les clients
pour des utilisateurs particuliers (par exemple nous pourrions écrire un script particulier
de telle sorte que les utilisateurs d'un département d'études obtiennent une configuration X
différente de celle de quelqu'un de la comptabilité). Bien qu'il y ait déjà ici des possibilités
intéressantes, nous avons sous-utilisé beaucoup du potentiel. Remarquez, qu'il s'agit d'un script
standard et que par conséquent, nous pouvons appeler n'importe quelle commande que nous utiliserions
normalement et les faire éxecuter. Examinons maintenant un dernier exemple qui utilise xmodmap
et xrdb pour concatener une configuration personnelle avec celle du fichier système xinitrc,
nous libérant ainsi de la tâche de constitution d'un fichier xinitrc dans le répertoire
des utilisateurs qui ont besoins d'options personnalisées (l'utilisation de Xclients et Xressources
à des fins spécifiques est décrites ci-dessous):
#/etc/X11/xinit/xinitrc
#!/bin/sh
# definition du chemin des ressources locales et globale
userclients=$HOME/.Xclients
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# concaténer les Xdefaults et tables clavier système et utilisateur
if [ -f $sysresources ]; then xrdb -merge $sysresources; fi
if [ -f $sysmodmap ]; then xmodmap $sysmodmap; fi
if [ -f $userresources ]; then xrdb -merge $userresources; fi
if [ -f $usermodmap ]; then xmodmap $usermodmap; fi
# régler le problème backspace
xmodmap -e "keycode 22=BackSpace"
# Définir l'arrière plan
xsetroot -solid LightSlateGrey
# économiser d'écran au bout de cinq minutes
xset s 300
# vérifier la présebce de ~/.Xclients et exécuter sinon executer le système
# clients par défaut ( local et global ne sont PAS mélangés)
if [ -f $userclients ]; then
exec $userclients
else
#lancer les clients par défaut
xterm -g 80x20+150+8 &
xterm -g 80x20+150+325 &
xload -g +4+0 &
xclock -g +815+0 -digital &
# Lance le gestionnaire de fenêtres
fvwm2
fi
Copie d'écran de la
session X utilisant cette configuration
Nous avons d'abord chargé toutes les tables claviers système et les configurations
par défaut des programmes (définies dans .Xmodmap et .Xresources) puis les réglages
spécifiques à l'utilisateur (situés dans son propre répertoire). Ensuite, nous ajoutons
les réglages additionnels même s'ils n'existent ni dans ceux du système ni dans ceux
de l'utilisateur (par exemple la correction du backspace et le verrouillage du pavé numérique).
Après, nous verifions si l'utilisateur à un Xclients dans son répertoire (et le chargeons s'il existe)
sinon, nous lançons des réglages au niveau système (remarquez que contrairement aux défauts et
ressources plus haut, ces deux lignes ne sont PAS concaténées). Il faut aussi mentionner le fait
que si l'utilisateur n'a pas de Xclients dans son répertoire, sa configuation ressemblera à notre
copie d'écran originale
contrairement à celle d'au dessus;
par conséquent, nous avons la possibilité d'avoir simultanément un aspect général au niveau système
et un environnement hautement personnalisé à partir du même xinitrc. Pour finir, nous vérifions
la présence de notre (nos) gestionnaire(s) de fenêtres préferré(s) sinon, nous nous reposons sur
le bon vieux fvwm2 par sécurité (s'il est inconnu, le système lancera twm en dernier recours). Nous
disposons maintenant d'une configuration qui permet des réglages personnalisés pour l'ensemble
des utilisateurs simplement en installant des fichiers locaux, ou bien d'une configuration au niveau
du système en modifiant les fichiers système sans plus jamais toucher à nos scripts.
Regardons quelques fichiers référencés dans les exemples précédents...
.Xclients
Le fichier ~/.Xclients contient des clients spécifiques à l'utilisateur qui doivent
être exécutés au démarrage d'une session X. La syntaxe de ce fichier se conforme à celle des
instructions comparables dans le fichier xinitrc. Le fichier ~/.Xclients ci-dessous est chargé
par le xinitrc utilisé dans la recopie d'écran précédente.
xv -rmode -noresetroot -quit /usr/local/backgrounds/slate.xpm &
kfm &
kcontrol -init &
kbgndwm &
krootwm &
kpanel &
kvt &
kwm
Comme vous pouvez le voir sur la recopie d'écran précédente, Xclients peut être utilisé pour
présenter des environnements personnalisés tout en conservant un fichier xinitrc centralisé.
Remarquez que dans le .xinitrc ci-dessus, aucun client n'est lancé si ~/.Xclients est present.
J'utilise cette configuration afin que chaque utilisateur puisse démarrer son gestionnaire de fenêtres favoris
avec Xclients. Si vous avez besoin de clients spécifiques au système chargés systématiquement,
lancez les avant d'exécuter un Xclients utilisateur (si ~/.Xclients contient un appel à un gestionnaire
de fenêtres). Pour ceux d'entre vous qui sont intéressés par la configuration de mon bureau présentée
dans le dernier exemple, jeter un coup d'oeil au
site de KDE . La version 3.0 Beta vient juste de sortir et contient beaucoup
d'outils très pratiques de configuration de l'interface graphique.
.Xresources
Les ressources dans X définissent des réglages pour les programmes locaux (~/.Xresources)
ou globaux (/usr/X11R6/lib/X11/xinit/.Xresources). Les programmes X sont constitués de widgets.
Ce sont des éléments de contrôle; il y en a donc pour les polices, les barres de défilement et
l'arrière plan. Pratiquement tout dans un programme X est un widget (et donc paramètrable).
Les widgets sont habituellement hiérarchisés, par exemple, dans un cadre d'un menu il peut y avoir
plusieurs widgets pour des boutons individuels. Pour exprimer complètement des changements pour un
widget spécifique, il doit être exprimé sous la forme d'un chemin vers le composant individuel.
Ce chemin est le nom du widget dans la hiérarchie. A titre d'exemple, voici ci-dessous des lignes de mon
fichier ~/.Xdefaults qui standardise toutes mes fenêtres de terminaux.
XTerm*Font: -misc-fixed-bold-r-normal-15-140-75-75-c-90-iso8859-1
XTerm*Background: black
XTerm*Foreground: cyan
XTerm*scrollBar: true
XTerm*saveLines: 500
Xterm*VT100.geometry: 80x24
Remarquez que les joker sont autorisés, donc...
*Foreground: cyan
*Background: black
Définira un aspect standard pour tous les programmes qui n'ont pas de paramètres
explicites dans Xdefault. Si, comme moi, vous voulez plus de flexibilité que les
jokers, mais que vous avez du mal à vous souvenir de l'arborescence des widgets
pour ménager votre santé...essayer editres! C'est un outils de configuration graphique intercatif
qui vous permettra de générer des configurations extrèmement personnalisées sans avoir
à écrire le moindre fichier Xdefaut. Consultez une photo de
editres en action ! Vous devriez commencer maintenant à réaliser que Xdefaut offre des
possibilités excitantes pour modifier l'aspect général tout comme pour personnaliser fortement
des clients. Constatez ce que Xdefaut à fait à ce misérable xcalc .
Un guide pas à pas sur l'utilisation complète des possibilités d'editres est visibles sur la page des trucs X d'
Isolation.
Voilà, c'est à peu près tout pour ce mois ci. J'espère que maintenant vous voyez que X
peut être aussi bien personnalisé que standardisé à volonté sans avoir à passer des heures à réécrire des scripts
pour chaque nouvel utilisateur. Le prochain numéro (du moins c'est ce que souhaite l'éditeur
Miguel A .Sepulveda ) nous verrons comment avoir plusieurs comptes
sur la même station avec le Gestionnaire d'affichage XDM. Si vous avez des questions ou des remarques, n'hésitez pas à
me contacter. D'ici la prochaine fois...
|