#!/bin/bash
echo >&2 ".xsession: ------------------------------------------------------------------------"
echo >&2 ".xsession: start"

if [ x = x"$HOME" ] ; then
	export HOME=`pwd`
fi

HOME_DIR=$(ls -d ~)
echo >&2 ".xsession: PATH=$PATH"
echo >&2 ".xsession: HOME=$HOME"
echo >&2 ".xsession: HOME_DIR=$HOME_DIR"
if ! ( echo "$PATH" | grep -q "${HOME_DIR}/bin" ) ; then
        export PATH="${HOME_DIR}/bin:${PATH}"
fi
if ! ( echo "$PATH" | grep -q "${HOME_DIR}/usr/bin" ) ; then
        export PATH="${HOME_DIR}/usr/bin:${PATH}"
fi

echo >&2 ".xsession: SSH_AGENT_PID=$SSH_AGENT_PID"
if ( ssh-add -l >/dev/null 2>/dev/null ) \
                || test $(ssh-add -l | wc -l) = 0 ; then
        echo >&2 ".xsession: no ssh-agent, exec'ing ssh-agent .xsession"
        eval $(ssh-agent -s)
fi
if test $(ssh-add -l | wc -l) = 0 ; then
        SSH_ASKPASS=$(which ssh-askpass-fullscreen ssh-askpass | head -n1) \
        ssh-add </dev/null
fi

if [ x = x${GPG_AGENT_INFO} ] ; then
  eval `gpg-agent -s --daemon`
fi

if [ -f .fonts/rebuild ] ; then
        .fonts/rebuild
fi

# ------------------------------ ------------------------------ 

export BROWSER=firefox

case $HOSTNAME in
oxygen*)
        /usr/bin/X11/xmodmap .xmodmaprc
        ;;
xenon*)
        #xmodmap .xmodmaprc-xenon
        #xmodmap -e "pointer = 1 2 3 6 7 4 5"
        #xmodmap -e "pointer = 1 2 3 6 7 4 5"
        ;;
esac

# ------------------------------ ------------------------------ 

# load sound defaults
aumix -L

# hides the mouse pointer after some time of inactivity
unclutter &

# generic key macro daemon
#xbindkeys

# make sure that the gkrellm is running
function do_gkrellm() {
        if ! ( ps aux | grep -q '\<[g]krellm\> *$' ) ; then
                ( while true ; do sleep 10 ; nice -n20 gkrellm ; done ) &
        fi
        if ! ( ps aux | grep -q '\<[g]krellm\> -server muon.jukie.net' ) ; then
                ( while true ; do sleep 10 ; nice -n20 gkrellm -server muon.jukie.net ; done ) &
        fi
}

function do_screensaver() {
	/usr/bin/xscreensaver -nosplash &
}

function do_xset() {
        # set the keyboard keyboard rates
        xset r on
        xset r rate 200 25

        # no bell please
        xset b off
}

# background
function do_background() {
        xsetroot -solid black
        #qiv -z .b/A_Place_for_My_Head.jpg
        #qiv -z .b/talking_krusty_doll_wallpaper.jpg
}

# ------------------------------ ------------------------------ 

#WM='xfce'
#WM='icewm'

WM=`cat $HOME/.wm`

# make sure there is at least one terminal running
if ! ( ps auxww | grep -v grep | grep -q '^bart.*\(xterm\|rxvt\|gnome-terminal\|kconsole\)' ) ; then
        (${HOME}/bin/my-terminal || xterm ) &
fi

case $WM in
ratpoison)
        do_xset
        do_background
        do_screensaver
        /usr/bin/ratpoison
        ;;

xfce)
        do_xset
        do_background
	/usr/bin/xfce-mcs-manager
	/usr/bin/xfwm4 --daemon
        do_screensaver
	#/usr/bin/xftaskbar4 &
	#/usr/bin/xfdesktop &
	##/usr/bin/xfdeskmenu &
	/usr/bin/xfce4-panel
	;;

icewm|ice)
        do_xset
        do_background
        do_screensaver
	/usr/bin/icewm-session
	;;

oroborus)
        do_xset
        do_background
        do_screensaver
	(sleep 10 ; /usr/bin/deskmenu ) &
	/usr/bin/oroborus
	;;

ion)
        do_xset
        do_background
        do_screensaver
	ion
	;;

ion3)
        do_xset
        do_background
        do_screensaver
	ion3
	;;

wmii)
        do_xset
        do_background
        do_screensaver
        /usr/bin/wmii
        ;;

~wmii)
        do_xset
        do_background
        do_screensaver
        if test -f ${HOME}/.wmii-3.5/wmiirc ; then
                ${HOME}/usr/bin/wmii -r ${HOME}/.wmii-3.5/wmiirc
        elif test -f ${HOME}/.wmii-3.5/wmiirc.lua ; then
                ${HOME}/usr/bin/wmii -r ${HOME}/.wmii-3.5/wmiirc.lua
        elif test -f ${HOME}/.wmii-3.5/wmiirc.dist ; then
                ${HOME}/usr/bin/wmii -r ${HOME}/.wmii-3.5/wmiirc.dist
        fi
	;;

wmii-lua)
        do_xset
        do_background
	( wmii-lua || true )
	;;

~wmii)
        do_xset
        do_background
        #cmd="/home/oxygen/bart/usr/bin/wmii -r \"${HOME_DIR}/.wmii-3.5/wmiirc\""
        cmd="/home/oxygen/bart/usr/bin/wmii"
        echo >&2 ".xsession: running $cmd"
        $cmd
        echo >&2 ".xsession: wmii exited with $?"
	;;

awesome)
        do_xset
        do_background
        do_screensaver
        while true ; do
                echo `date` `uptime | sed 's/.*,//'`
                sleep 1
        done | /home/oxygen/bart/usr/bin/awesome
        ;;

dwm)
        do_xset
        do_background
        do_screensaver
        /home/oxygen/bart/usr/bin/dwm
	;;

weewm|wee)
        do_xset
        do_background
        do_screensaver
	weewm
	;;

golem)
        do_xset
        do_background
        do_screensaver
	/usr/bin/golem
	;;

bb|blackbox)
        do_xset
        do_background
        do_screensaver
	/usr/bin/blackbox
	;;

ob|openbox)
        do_xset
        do_background
        do_screensaver
        OBPAGER=/home/muon/bart/bin/obpager
        if [ -x ${OBPAGER} ] ; then
                if ! (ps auxww | grep -q "^bar[t].*${OBPAGER}" ) ; then
                        ( sleep 2 ; ${OBPAGER} ) &
                fi
        fi
	/usr/bin/openbox
        killall obpager
	;;

fvwm)
        do_xset
        do_background
        do_screensaver
	fvwm-themes-start
	;;

ctwm)
        do_screensaver
        ctwm
        ;;

sawfish|saw|fish)
        do_xset
        do_background
        do_screensaver
        do_gkrellm
        LD_LIBRARY_PATH=/32/usr/lib /32/usr/bin/sawfish || sawfish
	;;

*)
	#xterm -c "vim -o $HOME/.vm $HOME/.xsession"
        urxvt
	;;
esac

echo ' ------------------- restarting --------------------- '
sleep 1
exec /bin/bash .xsession
