#!/bin/sh

if [ "$(id -u)" -eq 0 -o "$(id -ru)" -eq 0 ] ; then
	echo Refusing to run as root.
	exit 3
fi

usage() {
    cat <<EOF
Usage: sugar [OPTION]..

Start Sugar window manager.

Optional arguments.
  -d, --display DISPLAY     Display to start sugar
  -s, --scaling SCALING     Scale Sugar theme
                            Supported values: 72, 100
EOF
    exit 0
}

while [ $# -ne 0 ] ; do
    case "$1" in
      	-d | --display)
            shift
            export DISPLAY="$1"
            ;;
      	-s | --scaling)
            shift
            export SUGAR_SCALING="$1"
            ;;
      	-h | --help)
            usage
            ;;
    esac
    shift
done

# Set default profile dir
if test -z "$SUGAR_PROFILE"; then
    export SUGAR_PROFILE=default
fi

if test -z "$SUGAR_SCALING"; then
    dpi=$(xdpyinfo | grep resolution: | grep -o '[0-9]\+' | head -n1)
    if [ $dpi -ge 200 ]; then
        export SUGAR_SCALING=100
    else
        export SUGAR_SCALING=72
    fi
fi

if test "$SUGAR_SHELL_PREFIX"; then
    include='xml:readonly:$(HOME)/.sugar/gconf'
    grep "$include" ~/.gconf.path >/dev/null 2>&1 || \
        echo "$include" >> ~/.gconf.path
    mkdir -p ~/.sugar
    rm -rf ~/.sugar/gconf
    ln -s $SUGAR_SHELL_PREFIX/gconf ~/.sugar/
    gconftool-2 --shutdown

    export GTK2_RC_FILES="$SUGAR_SHELL_PREFIX/share/sugar/data/sugar-$SUGAR_SCALING.gtkrc"
else
    export GTK2_RC_FILES="$(dirname $0)/../share/sugar/data/sugar-$SUGAR_SCALING.gtkrc"
fi

# Needed for executing wpa_passphrase
export PATH="$PATH":/sbin:/usr/sbin

if ! test -f "$GTK2_RC_FILES"; then
    echo "sugar: ERROR: Gtk theme for scaling $SUGAR_SCALING not available in path $GTK2_RC_FILES"
    exit 1
fi

# Set default language
export LANG="${LANG:-en_US.utf8}"
export LANGUAGE="${LANGUAGE:-${LANG}}"

# Set Sugar's telepathy accounts directory
export MC_ACCOUNT_DIR=$HOME/.sugar/$SUGAR_PROFILE/accounts

# Source language settings and debug definitions
if [ -f ~/.dmrc ]; then
    dmrc_lang=$(grep -i '^Language *=' ~/.dmrc | awk -F= '{print $2}' | sed 's/[[:space:]]//g')
    if [ "${dmrc_lang}" ]; then
        [ ${dmrc_lang} = "C" ] && dmrc_lang="en_US.utf8"
        echo ${dmrc_lang} | grep '\.' >/dev/null || dmrc_lang="${dmrc_lang}.utf8"
        LANG="${dmrc_lang}"
        LANGUAGE="${LANG}:$(grep -i '^ExtraLanguages *=' ~/.dmrc | awk -F= '{print $2}' | sed 's/[[:space:]]//g; s/;/:/g')"
    fi
elif [ -f ~/.i18n ]; then
        . ~/.i18n
fi
if [ -f ~/.sugar/debug ]; then
        . ~/.sugar/debug
fi

if [ -z "$MOZILLA_FIVE_HOME" -a ! -e /opt/sweets/xulrunner/binding ]; then
    # If xulrunner comes not from SD, let pyxpcom/hulahop/Browse
    # work even on xulrunner's minor distro updates.
    # This code supplements hulahop #3064's patch.
    for i in `ls -d /usr/lib*/xulrunner-1.* | sort -r`; do
        if [ -e $i/libxul.so ]; then
            export LIBXUL_DIR=$i
            export LD_LIBRARY_PATH=$i:$LD_LIBRARY_PATH
            break
        fi
    done
fi

echo Xcursor.theme: sugar | xrdb -merge
metacity --no-force-fullscreen -d $DISPLAY &

# Run shell in a loop to reflect on $plugins_binding changes
restart_file=$HOME/.sugar/$SUGAR_PROFILE/restart
plugins_binding=$HOME/.sugar/$SUGAR_PROFILE/plugins.binding
while true; do
    rm -rf $restart_file
    (
        [ -e $plugins_binding ] && . $plugins_binding;
        # Launch new DBus session to take into account
        # new DBus services came from sweets and plugins' binding
        exec dbus-launch --exit-with-session sugar-session "$@"
    )
    [ -e $restart_file ] || break
done
