#!/bin/bash
# Copyright (c) 1999, 2000, 2001 Red Hat, Inc.

# Stop Models@Home screen saver
/usr/cluster/scrsavco -exit

# redirect errors to a file in user's home directory if we can
errfile="$HOME/.xsession-errors"
if cp /dev/null "$errfile" 2> /dev/null ; then
    chmod 600 "$errfile"
    exec > "$errfile" 2>&1
else
    errfile=`mktemp -q /tmp/xses-$USER.XXXXXX`
    if [ $? -eq 0 ]; then
        exec > "$errfile" 2>&1
    fi
fi

if ! printenv PATH | grep -q /usr/X11R6/bin
then
	PATH="${PATH}":/usr/X11R6/bin
fi

xsetroot -solid '#5477A0'

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
userxkbmap=$HOME/.Xkbmap

sysresources=/etc/X11/Xresources
sysmodmap=/etc/X11/Xmodmap
sysxkbmap=/etc/X11/Xkbmap

# merge in defaults
if [ -f "$sysresources" ]; then
    xrdb -merge "$sysresources"
fi

if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

# merge in keymaps
if [ -f "$sysxkbmap" ]; then
    setxkbmap $(cat "$sysxkbmap")
    XKB_IN_USE=yes
fi

if [ -f "$userxkbmap" ]; then
    setxkbmap $(cat "$userxkbmap")
    XKB_IN_USE=yes
fi

if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
    if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
       xkbsymbols=`sed -n -e 's/^[     ]*XkbSymbols[   ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
       if [ -n "$xkbsymbols" ]; then
           setxkbmap -symbols "$xkbsymbols"
           XKB_IN_USE=yes
       fi
    fi
fi

# xkb and xmodmap don't play nice together
if [ -z "$XKB_IN_USE" ]; then
    if [ -f "$sysmodmap" ]; then
       xmodmap "$sysmodmap"
    fi

    if [ -f "$usermodmap" ]; then
       xmodmap "$usermodmap"
    fi
fi

unset XKB_IN_USE

# run all system xinitrc shell scripts.
for i in /etc/X11/xinit/xinitrc.d/* ; do
    if [ -x "$i" ]; then
       . "$i"
    fi
done

# now, we see if xdm/gdm/kdm has asked for a specific environment
case $# in
1)
    if [ -x /usr/share/apps/switchdesk/Xclients.$1 ]; then
       exec -l $SHELL -c "/usr/share/apps/switchdesk/Xclients.$1";
    fi;

    case $1 in
    failsafe)
       exec -l $SHELL -c "xterm -geometry 80x24-0-0"
       ;;
    gnome)
       exec -l $SHELL -c "gnome-session"
       ;;
    kde|kde1|kde2)
       exec -l $SHELL -c "/usr/share/apps/switchdesk/Xclients.kde"
       ;;
    twm)
        # fall back to twm
       exec -l $SHELL -c "/usr/share/apps/switchdesk/Xclients.twm"
       ;;
    esac
esac

# otherwise, take default action
if [ -x "$HOME/.xsession" ]; then
    exec -l $SHELL -c "$HOME/.xsession"
elif [ -x "$HOME/.Xclients" ]; then
    exec -l $SHELL -c "$HOME/.Xclients"
elif [ -x /etc/X11/xinit/Xclients ]; then
    exec -l $SHELL -c "/etc/X11/xinit/Xclients"
else
    # should never get here; failsafe fallback
    exec -l $SHELL -c "xsm"
fi

