#!/bin/bash
# (c) 1999 Red Hat Software, Inc.
# many modification by Jun Nishii <jun@flatout.org>
#            Time-stamp: <2000-06-06 22:54:00 shaolin>

#
# these files are left sitting around by TheNextLevel.
#
rm -f ${HOME}/Xrootenv.0
rm -f /tmp/fvwmrc* 2>/dev/null

#
# Clean up message log
#
cp -f /dev/null ${HOME}/.xwm.msgs

# Set font path for Xpmac/XFree86-4.0-mga-r128-v2 server (ppc)
if [ -L /etc/X11/X ] ; then
    if [ `/bin/ls -l /etc/X11/X | grep -c Xpmac` -eq 1 ] || \
       [ `/bin/ls -l /etc/X11/X | grep -c mga-r128` -eq 1 ]; then
        if [ -f /usr/X11R6/lib/X11/fonts/TrueType/fonts.dir ] ; then
            xset +fp /usr/X11/lib/X11/fonts/TrueType
        fi
        xset +fp unix/:-1
        xset fp rehash
    fi
fi

# Select IME
# do not start wnn6xwnmo here because wnn6xwnmo sometimes stop
#
source /usr/share/vine/imelib
[ -f ${HOME}/.vine/system/ime ] && source ${HOME}/.vine/system/ime

echo -n "Selecting IME ... " >> ${HOME}/.xwm.msgs

case "${XIM_PROG}" in
    wnn6*|Wnn6*)
        echo "Wnn6 with ${WNN6_FRONT_END}, server=${WNN6_SERVER}" >> ${HOME}/.xwm.msgs
        setime wnn6 >> ${HOME}/.xwm.msgs
        ;;
    freewnn*|FreeWnn*)
        echo "FreeWnn with kinput2, server=${JSERVER}" >> ${HOME}/.xwm.msgs
        setime FreeWnn >> ${HOME}/.xwm.msgs
        ;;
    canna*|Canna*)
        export CANNAHOST=$CANNA_SERVER
        echo "Canna with kinput2, server=${CANNA_SERVER}" >> ${HOME}/.xwm.msgs
        setime Canna >> ${HOME}/.xwm.msgs
        ;;
    No_IM)
        echo "None selected" >> ${HOME}/.xwm.msgs
        ;;
    *)
        echo "${XIM_PROG} as a default setting" >> ${HOME}/.xwm.msgs
        setime default >> ${HOME}/.xwm.msgs
esac

# define font size
HEIGHT=`xrdb -symbol|grep HEIGHT`
if [ ${HEIGHT#*=} -lt 768 ]; then
	XFONTSIZE=small
else
	XFONTSIZE=normal
fi
export XFONTSIZE

# these files are left sitting around by TheNextLevel.
rm -f $HOME/Xrootenv.0
rm -f /tmp/fvwmrc* 2>/dev/null

startWM(){
    WM=$1
    shift
    CMD="`which $1 2>/dev/null`"
    shift
    if [ -n "$CMD" ]; then
        echo Starting $WM >>$HOME/.xwm.msgs
	env > "$HOME"/Xrootenv.0
	exec $CMD $@ >>$HOME/.xwm.msgs 2>&1
	return 0
    fi
    return -1
}

# First thing - check the user preferences
if [ -f $HOME/.wm_style ] ; then
    WMSTYLE=`cat $HOME/.wm_style`
    case "$WMSTYLE" in 
	wmaker*|WindowMaker*)
	    startWM WindowMaker RunWM --WindowMaker
	    ;;
 	afterstep*|Afterstep*|AfterStep*)
	    startWM AfterStep RunWM --AfterStep
 	    ;;
 	blackbox*|BlackBox*|BLACKBOX*)
	    startWM BlackBox blackbox
 	    ;;
 	icewm*|IceWm*|ICEWM*)
	    startWM icewm icewm
 	    ;;
	gnome*|Gnome*|GNOME*)
	    startWM Gnome gnome-session
	    ;;
	startkde*|kde*|KDE*)
	    startWM KDE startkde
	    ;;
        enlightenment*|Enlightenment*|ENLIGHT*)
	    startWM Enlightenment enlightenment
            ;;
	sawmill*)
	    startWM sawmill sawmaill
	    ;;
        qvwm*|QVWM*)
	    startWM qvwm qvwm
	    ;;
	fvwm2*|FVWM2*)
	    startWM fvwm2 fvwm2
	    ;;
	twm*|TWM*)
	    startWM twm twm &&\
                 exec kterm -C -title Login -n Login -sb -geometry 80x25-0-0 -ls
            ;;
    esac
fi

# check to see if the user has a preferred desktop
PREFERRED=
if [ -f /etc/sysconfig/desktop ]; then
    if [ -n "`grep -i GNOME /etc/sysconfig/desktop`" ]; then
	PREFERRED=gnome-session
    elif [ -n "`grep -i KDE /etc/sysconfig/desktop`" ]; then
	PREFERRED=startkde
    elif [ -n "`grep -i AnotherLevel /etc/sysconfig/desktop`" ]; then
	PREFERRED=AnotherLevel
    fi
fi

if [ -n "$PREFERRED" -a "$PREFERRED" != "AnotherLevel" ] && \
	which $PREFERRED >/dev/null 2>&1; then
    PREFERRED=`which $PREFERRED`
    exec $PREFERRED
fi

# Argh! Nothing good is isntalled. Fall back to fvwm2 (win95-style) or twm
/usr/X11R6/bin/RunWM --WindowMaker || {
    xclock -geometry 100x100-5+5 &
    kterm -geometry 80x50-50+150 &
    if [ -f /usr/bin/netscape -a -f /usr/doc/HTML/index.html ]; then
	netscape /usr/doc/HTML/index.html &
    fi
    startWM fvwm2 fvwm2 || startWM twm twm
}
