Das Hauptdialogfenster für kdm enthält einen Sitzungsart-Knopf, mit dem man einen Window-Manager für die Sitzung wählen kann. Dieses Kapitel beschreibt die Änderungen, die man in den Konfigurationsdateien vornehmen muss, um diese Funktion zu unterstützen
Die Einträge, die erscheinen, wenn man auf den Sitzungsart-Knopf klickt, werden durch Einträge im KDM-Abschnitt der Datei kdmrc eingerichtet.
Wenn Sie mit kdm anmelden, wird das Shellskript Xsession ausgeführt. Die gewählte Sitzungsart wird als Befehlszeilenargument übergeben. (Xsession finden Sie für Redhat und Mandrake im Verzeichnis /etc/X11/xdm/ und für S.u.S.E. im Verzeichnis /usr/X11R6/lib/X11/xdm/). Bei der Problembehebung fügen Sie folgende Zeile zu Xsession hinzu:
echo "$0 || $1 || $2" > $HOME/.Xsession_args |
Das weitere Vorgehen hängt davon ab, wie Ihr System normalerweise die Window-Manager startet. Hier sind zwei verschiedene Möglichkeiten mit Beispielen für die benötigten Änderungen:
Der Window-Manager wird mit Befehlen innerhalb von Xsession gestartet. In diesem Fall können Sie ein case-Statement hinzufügen, um den gewünschten Window-Manager starten zu können. Mandrake-Linux macht das so; hier ist ein Auszug aus 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 |
Der Window-Manager wird mit einem weiteren Skript gestartet, das von Xsession aufgerufen wird. In diesem Fall müssen Sie sicherstellen, dass der Parameter, der an Xsession übergeben wird, auch an das andere Skript übergeben wird. Wird der Window-Manager z. B. wie folgt gestartet:
exec $startup |
ändern Sie die Zeile in:
exec $startup $@ |
Nach der Änderung müssen Sie im Startskript die Zeile finden, in der der Window-Manager gestartet wird. Eine Möglichkeit benutzt xinitrc, um den Window-Manager zu starten. Damit kann man die Systemdatei /etc/X11/xinit/xinitrc oder die benutzerspezifische Datei $HOME/.xinitrc benutzen. Wenn Sie $HOME/.xinitrc anpassen, sollten Sie eine Kopie im Verzeichnis /etc/skel speichern, so dass sie für jeden zukünftigen Benutzer korrekt angelegt wird. Hier ist ein Beispiel für xinitrc für ein System mit dieser Vorgehensweise:
#!/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 |