welcome: please sign in
location: xdm-multi

Anleitung fuer xdm Menue mit Window-Manager Auswahlliste

Xsetup_0 / Xsetup_default

#
# $XFree86: Xsetup_0,v 1.62 2003/03/21 12:01:40 elchy Exp $
#

xhost +localhost
xset s off

#xscreensaver -no-splash -timeout 2 -cycle 0 -no-lock-mode -no-capture-stderr -nice 10 \
# -xrm "xscreensaver*programs: xlock -nolock +install +grabmouse -nice 0 -mode flag -cycles 50" &

xconsole -geometry 480x100-0-0 -daemon -notify -verbose -fn fixed -exitOnFail

if [ $DISPLAY = ":0" ]; then
  disp=local
else
  disp=`echo $DISPLAY | cut -d. -f 1`
fi

XYRES=`xdpyinfo | grep dimensions | head -n1 | awk '{print $2}'`
XRES=`echo $XYRES | cut -dx -f1`
YRES=`echo $XYRES | cut -dx -f2`

case $XYRES in
  1024x768)
    xpmroot /etc/X11/xdm/pixmaps/daemon1024.xpm
    ;;
  1280x1024)
    xpmroot /etc/X11/xdm/pixmaps/daemon1280.xpm
    ;;
  1600x1200)
    xpmroot /etc/X11/xdm/pixmaps/daemon1600.xpm
    ;;
  *)
    xsetroot -solid SteelBlue
    ;;
esac

( echo "Choose your favorite Window Manager by pressing"
  echo "              <F1>:  none (xterm)"
  echo "              <F2>:  twm"
  echo "              <F3>:  fvwm"
  echo "              <F4>:  fvwm95"
  echo "              <F5>:  windowmaker"
  echo "              <F6>:  xfce"
  echo "              <F12>: shutdown-menu"
  echo "instead of <Return> after typing your Password."
  echo "Pressing <Return> will select your last choice,"
  echo "which is saved in ~/.wmrc. Default is \"fvwm95\"." ) | \
xmessage -file - -buttons "" -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
-geometry +$(expr $(expr $XRES / 2) - 172)+$(expr $(expr $YRES / 2) + 100) &
echo $! > /var/run/xmessage-$disp.pid

Hier wird Der Hintergrund anhand der Aufloesung gesetzt. Ausserdem wird ein "Menue" mit xmessage ausgegeben.

In der Xressources wir die entsprechende Variable zur Funktionstaste gesetzt

! $XFree86: Xresources,v 1.74 2003/11/17 17:27:13 elchy Exp

xlogin*login.translations: #override \
        Ctrl<Key>R: abort-display()\n\
        <Key>F1: set-session-argument(xterm) finish-field()\n\
        <Key>F2: set-session-argument(twm) finish-field()\n\
        <Key>F3: set-session-argument(fvwm) finish-field()\n\
        <Key>F4: set-session-argument(fvwm95) finish-field()\n\
        <Key>F5: set-session-argument(windowmaker) finish-field()\n\
        <Key>F6: set-session-argument(xfce) finish-field()\n\
        <Key>F12: set-session-argument(shutdown-menu) finish-field()\n\
        Ctrl<Key>Return: set-session-argument(xterm) finish-field()\n\
        <Key>Return: set-session-argument(default) finish-field()

xlogin*greeting: boron.inotronic.de
xlogin*namePrompt: \040\040\040\040\040\040\040Login:

xlogin*fail: Login incorrect

#if WIDTH > 800
xlogin*greetFont: -adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1
xlogin*font: -adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1
xlogin*promptFont: -adobe-helvetica-bold-r-normal--18-180-75-75-p-98-iso8859-1
xlogin*failFont: -adobe-helvetica-bold-r-normal--18-180-75-75-p-98-iso8859-1
#else
xlogin*greetFont: -adobe-helvetica-bold-o-normal--17-120-100-100-p-92-iso8859-1
xlogin*font: -adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1
xlogin*promptFont: -adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1
xlogin*failFont: -adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1
#endif

#ifdef COLOR

xlogin*borderWidth: 1
xlogin*frameWidth: 5
xlogin*innerFramesWidth: 2
xlogin*shdColor: #181871
xlogin*hiColor: #e0e9f2
xlogin*background: #c0c0c0
!xlogin*foreground: darkgreen
xlogin*greetColor: #181871
xlogin*promptColor: #181871
xlogin*borderColor: #181871
xlogin*failColor: red
*Foreground: #b22020
*Background: #fffff0
#else

xlogin*borderWidth: 3
xlogin*frameWidth: 0
xlogin*innerFramesWidth: 1
xlogin*shdColor: black
xlogin*hiColor: black

#endif

#if PLANES >= 8
xlogin*logoFileName: /etc/X11/xdm/pixmaps/FreeBSD-inotronic.xpm
#else
xlogin*logoFileName: /etc/X11/xdm/pixmaps/XFree86bw.xpm
#endif
xlogin*useShape: true
xlogin*logoPadding: 10

XConsole.text.geometry: 480x100
XConsole.verbose:       true
XConsole*iconic:        true
XConsole*font:          fixed
XConsole*Foreground:    black
XConsole*Background:    #bebebe

Chooser*geometry:               700x500+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-*

Xmessage*message.scrollVertical:        Never
Xmessage*message.ancestorSensitive:     False
Xmessage*message.cursorName:            left_ptr
Xmessage*message.pointerColor:          black

Xstartup_0/Xstartup_default

#
# $XFree86: Xstartup_0,v 1.60 2002/10/14 19:44:04 elchy Exp $
#
# Assign ownership of the console to the invoking user
#
# 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.
#

# determine the display name and kill startup xmessage
#
if [ $DISPLAY = ":0" ]; then
  disp=local
else
  disp=`echo $DISPLAY | cut -d. -f 1`
fi
kill `cat /var/run/xmessage-$disp.pid` && \
rm /var/run/xmessage-$disp.pid

chown $USER /dev/console

#xscreensaver-command -exit
xhost -localhost

# allow root to access any user's display
#
if [ ! "${USER}" = "root" ]; then
        ln -fs ${HOME}/.Xauthority /root/.Xauthority
fi

Xsession

#
# $XFree86: Xsession,v 1.81 2003/11/28 21:38:47 elchy Exp $

# redirect errors to a file in user's home directory if we can
for errfile in "$HOME/.xsession-errors" "${TMPDIR-/tmp}/xses-$USER" "/tmp/xses-$USER"
do
        if ( cp /dev/null "$errfile" 2> /dev/null )
        then
                chmod 600 "$errfile"
                exec > "$errfile" 2>&1
                break
        fi
done

# common settings
#
xset s off
xset m 4 2
xmodmap -e "keysym e = e E currency"

case $# in
1)
    # determine the display name
    #
    if [ $DISPLAY = ":0" ]; then
        disp=local
    else
        disp=`echo $DISPLAY | cut -d. -f 1`
    fi

    # define resolution values
    #
    XYRES=`xdpyinfo | grep dimensions | head -n1 | awk '{print $2}'`; export XYRES
    XRES=`echo $XYRES | cut -dx -f1`; export XRES
    YRES=`echo $XYRES | cut -dx -f2`; export YRES

    # read ~/.wmrc or set default window manager
    #
    if [ "X`cat $HOME/.wmrc`" != "X" ]; then
        wmrc=`cat $HOME/.wmrc`
    else
        wmrc=fvwm95
        WM=fvwm95
        echo $WM > $HOME/.wmrc
    fi

    # determine user's favorite window manager
    # ($wm is referenced in xsession scripts)
    # or call shutdown-menu
    #
    case $1 in
        xterm)
            exec xterm -geom 80x24-0-0
            ;;
        twm)
            wm=/usr/X11R6/bin/twm
            WM=twm
            echo $WM > $HOME/.wmrc
            ;;
        fvwm)
            wm=/usr/X11R6/bin/fvwm
            WM=fvwm
            echo $WM > $HOME/.wmrc
            ;;
        fvwm95)
            wm=/usr/X11R6/bin/fvwm95
            WM=fvwm95
            echo $WM > $HOME/.wmrc
            ;;
        windowmaker)
            wm=/usr/X11R6/bin/wmaker
            WM=windowmaker
            echo $WM > $HOME/.wmrc
            ;;
        xfce)
            wm=/usr/X11R6/bin/xfce4-panel
            WM=xfce
            echo $WM > $HOME/.wmrc
            ;;
        shutdown-menu)
            xsetroot -cursor_name left_ptr
            if [ $disp != "local" ]; then
                xmessage -buttons Okay -timeout 10 -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
                -center -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
                "Shutdown-menu is only available on local displays!"
                xmessage -buttons "" -timeout 1 -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
                -center -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
                "Terminating session..."
                exit 1
            fi
            xmessage -buttons "Halt system:0,Restart system:1,Quit X11:2,Cancel:3" \
            -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" -center \
            -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
            "<F12> chosen: What do you want exactly?"
            xmanswer=$?
            case $xmanswer in
                0)
                    xmessage -buttons "" -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
                    -center -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
                    "Halt system..." &
                    sleep 1
                    sudo shutdown -h now "Halt system chosen from xdm F12 menu"
                    ;;
                1)
                    xmessage -buttons "" -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
                    -center -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
                    "Restarting system..." &
                    sleep 1
                    sudo shutdown -r now "Restart system chosen from xdm F12 menu"
                    ;;
                2)
                    xmessage -buttons "" -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
                    -center -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
                    "Terminating X11..." &
                    sleep 1
                    sudo kill `cat /var/run/xdm.pid`
                    ;;
                3)
                    xmessage -buttons "" -bg "#c0c0c0" -fg "#181871" -fn 7x13bold -bordercolor "#181871" \
                    -center -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" \
                    "Restarting Xserver..." &
                    sleep 1
                    ;;
            esac
            exit 1
            ;;
        default)
            case $wmrc in
                twm)
                    wm=/usr/X11R6/bin/twm
                    WM=twm
                    ;;
                fvwm)
                    wm=/usr/X11R6/bin/fvwm
                    WM=fvwm
                    ;;
                fvwm95)
                    wm=/usr/X11R6/bin/fvwm95
                    WM=fvwm95
                    ;;
                windowmaker)
                    wm=/usr/X11R6/bin/wmaker
                    WM=windowmaker
                    ;;
                xfce)
                    wm=/usr/X11R6/bin/xfce4-panel
                    WM=xfce
                    ;;
            esac
            ;;
    esac

    # for local displays try to load
    #     ~/.Xdefaults.<WM>
    #     ~/.Xdefaults
    #     /etc/X11/xdm/session-defaults/Xdefaults.<WM>
    #     /etc/X11/xdm/session-defaults/Xdefaults
    # and then source
    #     ~/.xsession.<WM>
    #     ~/.xsession
    #     /etc/X11/xdm/session-defaults/xsession.<WM>
    #     /etc/X11/xdm/session-defaults/xsession
    # in the above order.
    #
    deflt=/etc/X11/xdm/session-defaults
    case $disp in
        local)
            if [ -f $HOME/.Xdefaults.$WM ]; then
                xrdb -load $HOME/.Xdefaults.$WM
            elif [ -f $HOME/.Xdefaults ]; then
                xrdb -load $HOME/.Xdefaults
            elif [ -f $deflt/Xdefaults.$WM ]; then
                xrdb -load $deflt/Xdefaults.$WM
            else
                xrdb -load $deflt/Xdefaults
            fi
            if [ -f $HOME/.xsession.$WM ]; then
                . $HOME/.xsession.$WM
            elif [ -f $HOME/.xsession ]; then
                . $HOME/.xsession
            elif [ -f $deflt/xsession.$WM ]; then
                . $deflt/xsession.$WM
            else
                . $deflt/xsession
            fi
            xset dpms 1800 0 0
            ;;

    # for all other displays try to load
    #     ~/.Xdefaults.<hostname>.<wm>
    #     ~/.Xdefaults.<wm>
    #     ~/.Xdefaults
    #     /etc/X11/xdm/session-defaults/Xdefaults.<wm>
    #     /etc/X11/xdm/session-defaults/Xdefaults
    # and then source
    #     ~/.xsession.<hostname>.<wm>
    #     ~/.xsession.<wm>
    #     ~/.xsession
    #     /etc/X11/xdm/session-defaults/xsession.<wm>
    #     /etc/X11/xdm/session-defaults/xsession
    # in the above order.
    #
        *)
            if [ -f $HOME/.Xdefaults.$disp.$WM ]; then
                xrdb -load $HOME/.Xdefaults.$disp.$WM
            elif [ -f $HOME/.Xdefaults.$WM ]; then
                xrdb -load $HOME/.Xdefaults.$WM
            elif [ -f $HOME/.Xdefaults ]; then
                xrdb -load $HOME/.Xdefaults
            elif [ -f $deflt/Xdefaults.$WM ]; then
                xrdb -load $deflt/Xdefaults.$WM
            else
                xrdb -load $deflt/Xdefaults
            fi
            if [ -f $HOME/.xsession.$disp.$WM ]; then
                . $HOME/.xsession.$disp.$WM
            elif [ -f $HOME/.xsession.$WM ]; then
                . $HOME/.xsession.$WM
            elif [ -f $HOME/.xsession ]; then
                . $HOME/.xsession
            elif [ -f $deflt/xsession.$WM ]; then
                . $deflt/xsession.$WM
            else
                . $deflt/xsession
            fi
            ;;
    esac

    # we shouldn't get here because xsession scripts
    # shoud have exec'd the window manager
    #
    ( echo "Sorry, selected window manager isn't installed yet,"
      echo "or \"exec \$wm\" is missing at the bottom of your"
      echo "personal ~/.xsession startup script." ) | \
    xmessage -file - -buttons shit -center -timeout 20 -bg "#c0c0c0" -fg "#181871" \
    -xrm "*message.scrollVertical:Never" -xrm "*message.borderWidth:0" &
    exec xterm -geometry 100x30-0-0

esac

Vielen Dank an Elchy fuer die config.

xdm-multi (last edited 2008-07-14 09:55:44 by localhost)