#! /bin/sh
# Xsession - run as user

# Note that the respective logout scripts are not sourced.
case $SHELL in
  */bash)
    [ -z "$BASH" ] && exec $SHELL $0 "$@"
    set +o posix
    [ -f /etc/profile ] && . /etc/profile
    if [ -f $HOME/.bash_profile ]; then
      . $HOME/.bash_profile
    elif [ -f $HOME/.bash_login ]; then
      . $HOME/.bash_login
    elif [ -f $HOME/.profile ]; then
      . $HOME/.profile
    fi
    ;;
  */zsh)
    [ -z "$ZSH_NAME" ] && exec $SHELL $0 "$@"
    emulate -R zsh
    [ -d /etc/zsh ] && zdir=/etc/zsh || zdir=/etc
    zhome=${ZDOTDIR:-$HOME}
    # zshenv is always sourced automatically.
    [ -f $zdir/zprofile ] && . $zdir/zprofile
    [ -f $zhome/.zprofile ] && . $zhome/.zprofile
    [ -f $zdir/zlogin ] && . $zdir/zlogin
    [ -f $zhome/.zlogin ] && . $zhome/.zlogin
    setopt shwordsplit noextendedglob
    ;;
  */csh|*/tcsh)
    # [t]cshrc is always sourced automatically.
    # Note that sourcing csh.login after .cshrc is non-standard.
    xsess_tmp=`mktemp /tmp/xsess-env-XXXXXX`
    $SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c export -p >! $xsess_tmp"
    . $xsess_tmp
    rm -f $xsess_tmp
    ;;
  *) # Plain sh, ksh, and anything we don't know.
    [ -f /etc/profile ] && . /etc/profile
    [ -f $HOME/.profile ] && . $HOME/.profile
    ;;
esac

# source system & user xprofiles
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f $HOME/.xprofile ] && . $HOME/.xprofile

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

# if the system Xsession startup script is present use it
if [ -x /etc/X11/Xsession ]; then
  exec /etc/X11/Xsession "$@"
else # otherwice fallback to running the session manually
  # apply Xresources configs
  if type xrdb >/dev/null 2>&1; then
    if [ -d /etc/X11/Xresources ]; then
      for i in /etc/X11/Xresources/*; do
        [ -f "$i" ] && xrdb -merge "$i"
      done
    elif [ -f /etc/X11/Xresources ]; then
          xrdb -merge /etc/X11/Xresources
    fi
    [ -f $HOME/.Xresources ] && xrdb -merge $HOME/.Xresources
  fi
  
  session=$1

  case "$session" in
    "")
      exec xmessage -center -buttons OK:0 -default OK "Sorry, \"$DESKTOP_SESSION\" is not a valid session."
      ;;
    failsafe)
      exec xterm -geometry 80x24-0-0
      ;;
    custom)
      exec ${SHELL:-/bin/sh} $HOME/.xsession
      ;;
    default)
      exec /opt/trinity/bin/starttde
      ;;
    *)
      eval exec "$session"
      ;;
  esac
fi

exec xmessage -center -buttons OK:0 -default OK "Sorry, cannot execute $session. Check $DESKTOP_SESSION.desktop."
