#!/bin/bash -login
#
# This Xsession file is the login script used by xdm, wdm, and
# gdm. The following files may affect the behavior of Xsession,
# xinitrc, and Xclients.
#
#	/etc/X11/xinit/session.d/*	--- session dependent settings
#	/etc/sysconfig/xinit-session	--- default session of the site
#	/etc/X11/xinit/xim.d/*		--- input method dependent settings
#	/etc/sysconfig/xinit-xim	--- default input method of the site
#	/etc/X11/xinit/lang.d/*		--- language dependent settings
#	/etc/sysconfig/xinit-lang	--- default language of the site
#
# Options passed by wdm (or gdm) will be written to the following dot files.
#
#	$HOME/.xinit.d/session		--- user prefered session
#	$HOME/.xinit.d/xim		--- user prefered input-method
#	$HOME/.xinit.d/lang		--- user prefered language
#


site_session=/etc/sysconfig/xinit-session
user_session="$HOME/.xinit.d/session"
site_xim=/etc/sysconfig/xinit-xim
user_xim="$HOME/.xinit.d/xim"
site_lang=/etc/sysconfig/xinit-lang
user_lang="$HOME/.xinit.d/lang"

session_dir=/etc/X11/xinit/session.d
xim_dir=/etc/X11/xinit/xim.d
lang_dir=/etc/X11/xinit/lang.d

# cleanup {x|w}dm resources
/usr/X11R6/bin/xrdb -remove

# clear screen
/usr/X11R6/bin/xsetroot -solid black

if [ ! -d "$HOME/.xinit.d" ]; then
	rm -rf "$HOME/.xinit.d"
	mkdir "$HOME/.xinit.d"
fi

case $# in
3)
	# "Session" option
        case $1 in
        Failsafe)
                exec /usr/X11R6/bin/xterm -geometry 80x24-0-0
		exit 1
                ;;
	NoChange)
		;;
	*)
		echo $1 > "$user_session"
        esac

	# "Language" option
	case $2 in
	None)
		echo > "$user_lang"
		;;
	NoChange)
		;;
	*)
		echo $2 > "$user_lang"
	esac

	# "Input Method" option
	case $3 in
	None)
		echo > "$user_xim"
		;;
	NoChange)
		;;
	*)
		echo $3 > "$user_xim"
	esac
esac


# redirect errors to a file in user's home directory if we can
for errfile in "$HOME/.xsession-errors" "/tmp/xses-$USER"; do
	if ( cp /dev/null "$errfile" 2> /dev/null )
	then
		chmod 600 "$errfile"
		exec > "$errfile" 2>&1
		break
	fi
done


# clean up after xbanner
if [ -x /usr/X11R6/bin/freetemp ]; then
	/usr/X11R6/bin/freetemp
fi


# execute xinitrc
exec /etc/X11/xinit/xinitrc
echo "Failed to execute /etc/X11/xinit/xinitrc"
exit 1

