#!/bin/bash

########################################################################
# -*- 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.                   #
#                                                                      #
# Too many modification by                                             #
# MATSUBAYASHI 'Shaolin' Kohji <shaolin@rhythmaning.org>               #
#                                                                      #
########################################################################

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

#
# Check the user preferences and run Window Manager
#
WMPATH=/etc/X11/wdm/wm.d
if [ -f ${HOME}/.wm_style ] ; then
    WMSTYLE=`cat ${HOME}/.wm_style`
    exec ${XSESSION_WRAPPER} ${WMPATH}/${WMSTYLE}
fi

#
# Below is the second failsafe entries...
#

# 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
