Configuration de XDM

Introduction

XDM est le programme qui gère les sessions X. C'est une interface graphique pour entrer son login et son mot de passe, qui démarre (une fois l'authentification réussie) un certain nombre de scripts, puis sur le gestionnaire de fenêtre de l'utilisateur.

Dans sa configuration par défaut, il est franchement très laid, mais on peut le personnaliser sans trop de difficultés (screenshots).

/etc/inittab

C'est ce fichier qui contrôle le run level par défaut  du système. Sur la distribution Red Hat 5.2, vous trouverez une ligne dans le fichier qui devrait ressemblerer à : 

id:3:initdefault: 
et changée la par : 
id:5:initdefault:
5 est le run level où XDM démarre. Il faut tout de me faire attention avant de modifier cette ligne, car le numéro du run level peut être différent suivant les distributions de linux (Debian, Slackware).

/etc/X11/xdm/xdm-config

Ce fichier spécifie à xdm où rechercher ses fichiers et les scripts de démarrage/arrêt.

DisplayManager.errorLogFile: /var/log/xdm-error.log
DisplayManager.pidFile:  /var/run/xdm.pid
DisplayManager.keyFile:  /etc/X11/xdm/xdm-keys
DisplayManager.servers:  /etc/X11/xdm/Xservers
DisplayManager.accessFile: /etc/X11/xdm/Xaccess
DisplayManager._0.authorize: true
DisplayManager._0.setup: /etc/X11/xdm/Xsetup_0
DisplayManager._0.startup: /etc/X11/xdm/GiveConsole
DisplayManager._0.reset: /etc/X11/xdm/TakeConsole
DisplayManager*resources: /etc/X11/xdm/Xresources
DisplayManager*session:  /etc/X11/xdm/Xsession
DisplayManager*authComplain: false

En principe, vous n'avez pas besoin de le modifier.

/etc/X11/xdm/Xsetup_0

Ce scripts est lancé au démarrage de XDM, où à la déconnection d'un utilisateur.
C'est là que se fait la plus grosse partie de la configuration.

#!/bin/sh
# $XConsortium: Xsetup_0,v 1.3 93/09/28 14:30:31 gildea Exp $

#affichage de l'image de fond avec XV (on peut utiliser aussi display)
/usr/X11R6/bin/xv -root -quit /opt/images/afterglow.jpg &

#exécution de xripple qui permet de faire osciller le bas de l'écran
/usr/X11R6/bin/xripple &
echo $! > /var/run/xdmripple.pid

#affichage de deux boutons (reboot et halt) dans un coin de l'écran pour
#que tout le monde puisse éteindre l'ordinateur.
/usr/bin/wish << EOF &
wm geometry . -0+0
button .halt   -text Halt   -fg black -bg gray -command {exec shutdown -h now}
button .reboot -text Reboot -fg black -bg gray -command {exec shutdown -r now}
pack .reboot .halt -side left
EOF
echo $! > /var/run/xdmbutton.pid
exit
Voilà un petit apperçu de ce qu'il est possible de faire.

On peut également ajouter du son :

SOUND=/root/start.wav
/usr/bin/esdplay $SOUND &
echo $! > /var/run/xdmsound.pid
Ou encore afficher un message à l'écran par l'intermédiaire de xconsole, ou mieux, avec aterm et autre émulateur de terminal gérant les effets de  transparence.
#la tempo est nécéssaire chez moi pour que aterm démarre après l'affichage de l'image
#à modifier donc en fonction de la taille de l'image, et de votre machine
sleep 4
/usr/X11R6/bin/aterm -tr -fg white -geometry 55x6+0+0 +ls +sb -C &
sleep 2
echo "" >> /dev/console
echo "     _    _" >> /dev/console
echo "    / /  (_)__  __ ____  __" >> /dev/console
echo "   / /__/ / _ \/ // /\ \/ /   ... the choice of a" >> /dev/console
echo "  /____/_/_//_/\_,_/ /_/\_\           GNU generation" >> /dev/console
echo "" >> /dev/console
On peut aussi utiliser n'importe quel programme qui peut servir pour des animations : xlock, xearth, xfishtank, xsnow, ...

Vous pouvez télécharger xripple ici, car il est pas simple à trouver.

/etc/X11/xdm/Xresources

C'est ce fichier qui permet de définit les caractéristiques (position, taille, couleur, texte) de la partie 'login' de l'écran, par l'intermédiaire du widget xlogin.

! $XConsortium: Xresources /main/8 1996/11/11 09:24:46 swick $
xlogin*login.translations: #override\
 Ctrl<Key>R: abort-display()\n\
 <Key>F1: set-session-argument(failsafe) finish-field()\n\
 Ctrl<Key>Return: set-session-argument(failsafe) finish-field()\n\
 <Key>Return: set-session-argument() finish-field()

xlogin*borderWidth: 1
xlogin*geometry: 260x180+375+180

xlogin*greeting: Linux.dream.org
xlogin*namePrompt: login:\040
xlogin*passwdPrompt : password:\040
xlogin*fail: Login incorrect

xlogin*greetColor: DarkSlateGrey
xlogin*failColor: red3
xlogin*foreground: PapayaWhip
xlogin*background: SandyBrown
xlogin*promptColor: PapayaWhip

!xlogin.Login.font: -freefont-engraver-*-*-*-*-12-*-*-*-*-*-*-*
!xlogin.Login.greetFont: -freefont-engraver-*-*-*-*-20-*-*-*-*-*-*-*
!xlogin.Login.promptFont: -freefont-engraver-*-*-*-*-14-*-*-*-*-*-*-*
!xlogin.Login.failFont: -freefont-engraver-*-*-*-*-20-*-*-*-*-*-*-*

xlogin.Login.font: -B&H-LucidaBright-DemiBold-R-Normal--14-140-75-75-P-84-ISO8859-1
xlogin.Login.greetFont: -B&H-LucidaBright-DemiBold-R-Normal--19-190-75-75-P-114-ISO8859-1
xlogin.Login.promptFont: -B&H-LucidaBright-DemiBold-R-Normal--14-140-75-75-P-84-ISO8859-1
xlogin.Login.failFont: -B&H-LucidaBright-DemiBold-I-Normal--14-140-75-75-P-84-ISO8859-1

XConsole.text.geometry: 480x130
XConsole.verbose: true
XConsole*iconic: true
XConsole*font:  fixed
XConsole*background: slategray
XConsole*foreground: PapayaWhip
XConsole*font: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*

Chooser*geometry:  400x70+300+200
Chooser*allowShellResize: false
Chooser*viewport.forceBars: true
Chooser*label.font:  *-new century schoolbook-bold-i-normal-*-240-*
Chooser*label.label:  XDMCP Host Menu  from CLIENTHOST
Chooser*list.font:  -*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
Chooser*Command.font:  *-new century schoolbook-bold-r-normal-*-180-*

/etc/X11/xdm/GiveConsole

C'est le fichier qui contient les commandes à exécuter à la fin de XDM, généralement des commandes pour arrêter les programmes lancés dans Xsetup_0.

#!/bin/sh
# Assign ownership of the console to the invoking user
# $XConsortium: GiveConsole,v 1.2 93/09/28 14:29:20 gildea Exp $
#
# By convention, both xconsole and xterm -C check that the
# console is owned by the invoking user and is readable before attaching
# the console output.  This way a random user can invoke xterm -C without
# causing serious grief.
#
chown $USER /dev/console

#pour arrêter l'animation une fois le login effectué
if test -r /var/run/xdmripple.pid; then kill `cat /var/run/xdmripple.pid`; fi

#pour détruire les bouttons affichés à l'écran
if test -r /var/run/xdmbutton.pid; then kill `cat /var/run/xdmbutton.pid`; fi