#!/bin/sh
# jimc-CouchNet hacks in this file....

# fix broken $UID on some system...
if test "x$UID" = "x"; then
	if test -x /usr/xpg4/bin/id; then
		UID=`/usr/xpg4/bin/id -u`;
	else
		UID=`id -u`;
	fi
fi

# $XDG_CONFIG_HOME defines the base directory relative to which user specific 
# configuration files should be stored. If $XDG_CONFIG_HOME is either not set 
# or empty, a default equal to $HOME/.config should be used.
if test "x$XDG_CONFIG_HOME" = "x" ; then
  XDG_CONFIG_HOME=$HOME/.config
fi
[ -d "$XDG_CONFIG_HOME" ] || mkdir "$XDG_CONFIG_HOME"

# $XDG_CACHE_HOME defines the base directory relative to which user specific 
# non-essential data files should be stored. If $XDG_CACHE_HOME is either not 
# set or empty, a default equal to $HOME/.cache should be used.
if test "x$XDG_CACHE_HOME" = "x" ; then
  XDG_CACHE_HOME=$HOME/.cache
fi
[ -d "$XDG_CACHE_HOME" ] || mkdir "$XDG_CACHE_HOME"

# For now, start with an empty list
XRESOURCES=""

# Has to go prior to merging Xft.xrdb, as its the "Defaults" file
test -r "/etc/xdg/xfce4/Xft.xrdb" && XRESOURCES="$XRESOURCES /etc/xdg/xfce4/Xft.xrdb"
test -r $HOME/.Xdefaults && XRESOURCES="$XRESOURCES $HOME/.Xdefaults"

BASEDIR=$XDG_CONFIG_HOME/xfce4
if test -r "$BASEDIR/Xft.xrdb"; then
  XRESOURCES="$XRESOURCES $BASEDIR/Xft.xrdb"
elif test -r "$XFCE4HOME/Xft.xrdb"; then
  mkdir -p "$BASEDIR"
  cp "$XFCE4HOME/Xft.xrdb" "$BASEDIR"/
  XRESOURCES="$XRESOURCES $BASEDIR/Xft.xrdb"
fi

# merge in X cursor settings
test -r "$BASEDIR/Xcursor.xrdb" && XRESOURCES="$XRESOURCES $BASEDIR/Xcursor.xrdb"

# ~/.Xresources contains overrides to the above
test -r "$HOME/.Xresources" && XRESOURCES="$XRESOURCES $HOME/.Xresources"

# load all X resources (adds /dev/null to avoid an empty list that would hang the process)
cat /dev/null $XRESOURCES | xrdb -nocpp -merge -

# load local modmap
test -r $HOME/.Xmodmap && xmodmap $HOME/.Xmodmap

# Launch xscreensaver (if available), but only as non-root user
if test $UID -gt 0 -a -z "$VNCSESSION"; then 
    if test x"`which xscreensaver 2>/dev/null`" != x""; then
        xscreensaver -no-splash &
    elif test x"`which gnome-screensaver 2>/dev/null`" != x""; then
        gnome-screensaver &
    fi
fi 

# Depending on what has and hasn't been done already, which depends on PAM
# configuration and idiosyncracies of the display manager, we build up a
# chain of nested commands in this variable.
command=

# Use ssh-agent if installed and not already running.  
sshagent=`which ssh-agent`
if test -n "$SSH_AGENT_PID"  && kill -0 $SSH_AGENT_PID ; then
	:		# we have a functioning ssh agent
elif test -n "$sshagent" -a "x$sshagent" != "xno"; then
	command="$command $sshagent"
fi

# Use ConsoleKit (ck-launch-session) if not set up by the display manager.
cklaunch=`which ck-launch-session`
if ck-list-sessions | grep "x11-display.&$DISPLAY" > /dev/null ; then
	:		# The display manager already registered the session
elif test -n "$cklaunch" -a "x$cklaunch" != "xno"; then
	command="$command $cklaunch"
fi


# Use dbus-launch if installed.
if test x"$DBUS_SESSION_BUS_ADDRESS" = x""; then
	dbuslaunch=`which dbus-launch`
	if test x"$dbuslaunch" != x"" -a x"$dbuslaunch" != x"no"; then
		command="$command $dbuslaunch --exit-with-session"
	fi
fi

# Run xfce4-session if installed
xfcesm=`which xfce4-session`
case "x$xfcesm" in
	x|xno*)
		command="$command $0-fallback"
		;;
	*)
		command="$command $xfcesm"
		;;
esac

# Run the session command and its various parents.
$command

# Suppress return code from the session.
exit 0
