Het hoofddialoogvenster van KDM heeft een "sessie type" drop-down box, die u in staat stelt een vensterbeheerder te kiezen voor uw sessie. Dit hoofdstuk beschrijft de wijzigingen in uw configuratiebestanden die u moet maken om deze mogelijkheid te ondersteunen.
De opties die verschijnen in de "sessie type" drop-down box zijn geconfigureerd door de ingangen in de KDM sectie van kdmrc.
Als u inlogt met KDM zal het shellscript Xsession uitgevoerd worden. De sessietype die u selecteerd is gepasseerd als een commandoregel argument.(Xsession kan gevonden worden in /etc/X11/xdm/ voor Redhat en Mandrake, en in /usr/X11R6/lib/X11/xdm/ voor S.u.S.E.). Met debuggen, zou het handig zijn om deze regel toe te voegen aan Xsession:
echo "$0 || $1 || $2" > $HOME/.Xsession_args |
Hoe u door moet gaan hangt van hoe uw systeem vensterbeheerders opstart af. Er zijn twee verschillende aanpakken, met voorbeelden van de wijzigingen die u moet maken:
De vensterbeheerder is gestart door commando's in Xsession. In dit geval, kan u een case statement toevoegen om de geschikte vensterbeheerder te starten. Linux Mandrake gebruikt deze aanpak; hier is een deel van Xsession:
# now, we see if xdm/gdm/kdm has asked for a specific environment
case $# in
1)
case $1 in
kde)
source /opt/kde2/bin/kde1
exec startkde
;;
kde2)
source /opt/kde2/bin/kde2
exec startkde
;;
failsafe)
exec xterm -geometry 80x24-0-0
;;
default)
;;
*)
exec /bin/sh -c "$(/usr/sbin/chksession -x=$1)"
;;
esac
esac |
De vensterbeheerder wordt gestart door een ander script dat gestart wordt door Xsession. In dit geval moet u zorgen dat de parameter die in Xsession gepasseerd is, gepasseerd wordt naar dat andere script. Bijvoorbeeld, als de vensterbeheerder zoals hier gestart is:
exec $startup |
u moet dit wijzigen naar:
exec $startup $@ |
Als u deze wijziging aangebracht heeft, moet u uw manier door de opstart traceren om de plaatst te vinden waar de vensterbeheerder gestart wordt. Eén aanpak gebruikt xinitrc om de vensterbeheerder te starten; dit kan een systeem-wijd bestand zijn /etc/X11/xinit/xinitrc of een gebruikersspecifiek $HOME/.xinitrc kan worden gebruikt. Als u $HOME/.xinitrc wijzigt, kan u een kopie bewaren in /etc/skel, zodat deze automatisch gegenereert wordt voor elke gebruikersaccount die u vanaf nu creëert. Hier is een voorbeeld xinitrc voor een systeem dat deze aanpak gebruikt:
#!/bin/bash
#
# .xsession/.xinitrc
#
# choose a window manager
#
defaultwm=kde
#set the window manager to $1 if it was supplied
windowmgr=${1:-$defaultwm}
#start the respective window managers
case ${windowmgr} in
kde|kwm|kdestart)
WINDOWMANAGER=startkde
;;
fvwm|fvwm2)
WINDOWMANAGER=fvwm2
;;
fvwm95)
WINDOWMANAGER=fvwm95
;;
*) WINDOWMANAGER=windowmgr # default for unknown wm's
esac
#
# load resources
#
if [ -f /usr/X11R6/lib/X11/Xmodmap ]; then
xmodmap /usr/X11R6/lib/X11/Xmodmap
fi
if [ -f ~/.Xmodmap ]; then
xmodmap ~/.Xmodmap
fi
if [ -f ~/.Xdefaults ]; then
xrdb -merge ~/.Xdefaults
fi
if [ -f ~/.Xresources ]; then
xrdb -merge ~/.Xresources
fi
#
# finally start the window manager
#
exec $WINDOWMANAGER |