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