#!/usr/bin/bash -login
# Xclients.in

########################################################################
# -*- sh -*-                                                           #
#                                                                      #
# ~/.Xclients: used by startx (xinit) to start up a window manager and #
# any other clients you always want to start an X session with.        #
#                                                                      #
# This version of Xclients is intended for use with wdm.  This         #
# separate file is used rather than the Red Hat Linux Xclients         #
# file located as /etc/X11/xinit/Xclients because it has been          #
# extensively modified to handle starting many different window        #
# or session managers and do that on systems other than Red Hat Linux. #
#                                                                      #
# Systems other than RedHat Linux will like need editing of this       #
# file to tailor the file for the particular system.                   #
#                                                                      #
########################################################################

# try to find executable in PATH
FindInPath()
{
	prog=$1
	shift
	result=
	for p in `echo $PATH|tr ':' ' '`; do
		if test -e $p/$prog; then
			result=$p/$prog
			break;
		fi
	done
}



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

# check for and set x-resources
if [ -f $HOME/.Xresources ] ; then
	@XRDB_PATH@ -merge $HOME/.Xresources
fi

if [ -f $HOME/.Xdefaults ] ; then
	@XRDB_PATH@ -merge $HOME/.Xdefaults
fi

WINMGR_NAME=@WINMGR_NAME@
if test -z "$WINMGR_NAME"; then
	WINMGR_NAME="UserDefined"
fi

# First thing - check the user preferences
if [ -f $HOME/.wm_style ] ; then
	WMSTYLE=`cat $HOME/.wm_style`
	case "$WMSTYLE" in 
#
# first, a general purpose entry:
	$WINMGR_NAME*)
		# startup a window manager
		WINMGR_PATH=@WINMGR_PATH@
		if test -x "$WINMGR_PATH" ; then
	        	echo Starting $WINMGR_NAME >$HOME/.xwm.msgs
			exec $WINMGR_PATH >>$HOME/.xwm.msgs 2>&1
		fi
		;;

	wmaker*|WindowMaker*)
		# startup WindowMaker
		WMAKER_PATH=@WMAKER_PATH@
		if ! test -x $WMAKER_PATH ; then
			FindInPath $WMAKER_PATH
			if test -n "$result" -a -x "$result"; then
				WMAKER_PATH="$result";
			fi
		fi
	
		if test -x $WMAKER_PATH ; then
			echo Starting WindowMaker >$HOME/.xwm.msgs
			env > "$HOME"/Xrootenv.0
			exec $WMAKER_PATH >>$HOME/.xwm.msgs 2>&1
		fi
		;;

	afterstep*|Afterstep*|AfterStep*)
		# we have to start up afterstep
		AFTERSTEP_PATH=@AFTERSTEP_PATH@
		if ! test -x $AFTERSTEP_PATH ; then
			FindInPath $AFTERSTEP_PATH
			if test -n "$result" -a -x "$result"; then
				AFTERSTEP_PATH="$result";
			fi
		fi
		if [ -x $AFTERSTEP_PATH -a -f /usr/share/afterstep/wmconfig.conf ] ; then
			mkdir -p $HOME/GNUstep/Library/AfterStep
			wmconfig --output=afterstep --directories /usr/share/afterstep/wmconfig.conf 2>/dev/null
			env > "$HOME"/Xrootenv.0
			# if this works, we stop here
			eval "exec $AFTERSTEP_PATH" > "$HOME"/.AfterStep-errors 2>&1
		fi
		;;

	blackbox*|BlackBox)
		# startup blackbox
		BLACKBOX_PATH=@BLACKBOX_PATH@
		if ! test -x $BLACKBOX_PATH ; then
			FindInPath $BLACKBOX_PATH
			if test -n "$result" -a -x "$result"; then
				BLACKBOX_PATH="$result";
			fi
		fi
		if [ -x $BLACKBOX_PATH ] ; then
			echo Starting BlackBox >$HOME/.xwm.msgs
			exec $BLACKBOX_PATH >>$HOME/.xwm.msgs 2>&1
		fi
		;;

	fluxbox*|FluxBox)
		# startup fluxbox
		FLUXBOX_PATH=/usr/X11R6/bin/startfluxbox
		if ! test -x $FLUXBOX_PATH ; then
			FindInPath $FLUXBOX_PATH
			if test -n "$result" -a -x "$result"; then
				FLUXBOX_PATH="$result";
			fi
		fi
		if [ -x $FLUXBOX_PATH ] ; then
			echo Starting FluxBox >$HOME/.xwm.msgs
			exec $FLUXBOX_PATH >>$HOME/.xwm.msgs 2>&1
		fi
		;;

	icewm*|IceWm)
		ICEWM_PATH=@ICEWM_PATH@
		if ! test -x $ICEWM_PATH ; then
			FindInPath $ICEWM_PATH
			if test -n "$result" -a -x "$result"; then
				ICEWM_PATH="$result";
			fi
		fi
		if [ -x $ICEWM_PATH ] ; then
			echo Starting icewm >$HOME/.xwm.msgs
			exec $ICEWM_PATH >>$HOME/.xwm.msgs 2>&1
		fi
		;;

	xfce*|XFCE*)# startup XFCE
		# startup XFCE
            XFCE_PATH=/usr/bin/startxfce4
            if ! test -x $XFCE_PATH ; then
                FindInPath $XFCE_PATH
                if test -n "$result" -a -x "$result"; then
                    XFCE_PATH="$result";
                fi
            fi
            if test -x $XFCE_PATH ; then
                echo Starting XFCE >$HOME/.xwm.msgs
                env > "$HOME"/Xrootenv.0
                exec $XFCE_PATH >>$HOME/.xwm.msgs 2>&1
            fi
            ;;

	xsession*|Xsession*)
		# startup xsession
		XSESSION_PATH=@XSESSION_PATH@
		if ! test -x $XSESSION_PATH ; then
			FindInPath $XSESSION_PATH
			if test -n "$result" -a -x "$result"; then
				XSESSION_PATH="$result";
			fi
		fi
		if [ -x $XSESSION_PATH ] ; then
			echo Starting xsession >$HOME/.xwm.msgs
			exec $XSESSION_PATH -console >>$HOME/.xwm.msgs 2>&1
		fi
		;;

	startkde*|kde*|KDE*)
		# startup kde
		STARTKDE_PATH=@STARTKDE_PATH@
		if ! test -x $STARTKDE_PATH ; then
			FindInPath $STARTKDE_PATH
			if test -n "$result" -a -x "$result"; then
				STARTKDE_PATH="$result";
			fi
		fi
		if [ -x $STARTKDE_PATH ] ; then
			echo Starting kde >$HOME/.xwm.msgs
			exec $STARTKDE_PATH -console >>$HOME/.xwm.msgs 2>&1
		fi
		;;
    esac
fi

# first, find an M4-enabled config file (such as 
# the one from AnotherLevel) for fvwm2 or fvwm95.
RCFILE=""
for tryfile in "$HOME/.fvwm2rc.m4" "/etc/X11/AnotherLevel/fvwm2rc.m4"; do
    if [ -f "$tryfile" ]; then
        RCFILE="$tryfile"
        break
    fi
done

# if it really exists, use it; if not, fvwm2 or fvwm95 will
# automagically look for a config file in the regular places.
if [ -n "$RCFILE" ]; then
    FVWMOPTIONS="-cmd 'FvwmM4 -debug $RCFILE'"
else
    FVWMOPTIONS=""
fi

# TheNextLevel is supposed to work
# with both fvwm95 and fvwm2
# (try fvwm95 first, then fvwm2).
for FVWMVER in 95 95-2 2; do
    if [ -n "$(type -path fvwm${FVWMVER})" ]; then
        env > "$HOME"/Xrootenv.0
        # if this works, we stop here
        eval "exec fvwm${FVWMVER} ${FVWMOPTIONS}" > "$HOME"/.FVWM${FVWMVER}-errors 2>&1
    fi
done

# gosh, neither fvwm95 nor fvwm2 is available;
# let's try regular fvwm (AnotherLevel doesn't work with fvwm1).
if [ -n "$(type -path fvwm)" ]; then
    # if this works, we stop here
    exec fvwm
fi

# No other window or session manager found.
# Use twm as a last resort.
xterm &
exec twm
