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 |