#!/bin/sh -x

# ~/.xinitrc
# Han Boetes (han mijncomputer nl)

# Obvious, isn't it?  First collumn for the name, second for the
# binary You can put the word default before your prefered default
# session.
sessions="
    default fluxbox       /usr/bin/startfluxbox
            Gnome         /usr/bin/gnome-session
            KDE           /usr/bin/startkde
            icewm         /usr/bin/icewm
            windowmaker   /usr/bin/wmaker
            fvwm2         /usr/bin/fvwm2
            ion           /usr/bin/ion3
            xfce          /usr/bin/startxfce4
            e17           /usr/bin/enlightenment
            ratpoison     /usr/bin/ratpoison
            pekwm         /usr/bin/pekwm
            sawfish       /usr/bin/sawfish
            tinywm        /usr/local/bin/starttinywm
            ede           /usr/bin/startede
            wmii          /usr/bin/wmii
            aterm         /usr/local/bin/Aterm
"

# Here you can add your own settings.
#export LC_ALL=nl_NL
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
export DISPLAY=:0.0

# No more settings after this:
# -------------------------------------

if type gxmessage > /dev/null 2>&1 ; then
    message=gxmessage
else
    message=xmessage
fi

maxsession=99
counter=0
unset gxmessage_options sessionlist

set -- $(echo $sessions)
while [ $# -ge 2 ]; do
    if [ $1 = default ]; then
        shift
        default=$1
    fi
    if type $2 > /dev/null 2>&1; then
        counter=$(($counter+1))
        gxmessage_options="$gxmessage_options$1:$counter,"
        sessionlist="$sessionlist $2"
    fi
    shift 2
done

# delete trailing comma
gxmessage_options=${gxmessage_options%,}

if [ -z "$gxmessage_options" ]; then
    $message -nearmouse "No sessions found. Running failsafe-session." &
    exec xterm
fi

$message -nearmouse "Which windowmanager do you want to run?" -buttons $gxmessage_options -default $default
returncode=$?

counter=0
for i in $sessionlist; do
    counter=$(($counter+1))
    if [ $counter -eq $returncode ]; then
        exec $i
    fi
done

