Unterstützung mehrerer Window-Manager

Das kdm Handbuch
Zurück | Kapitel 3. Ihr System für die Benutzung von kdm einrichten | Vor

# 3.2. Unterstützung mehrerer Window-Manager

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

Zurück | Anfang | Vor
Ihr System für die Benutzung von kdm einrichten | Hoch | kdm übersetzen und installieren