#!/bin/bash

RSLIB=/opt/R-Linux/lib
RSBIN=/opt/R-Linux/bin/R-Linux
RSSTARTUP=/opt/R-Linux/bin/rlinux
DESKFILE=/opt/R-Linux/share/rtt-rlinux.desktop
TRAMPLIN=/opt/R-Linux/bin/tramplin

PKEXEC="`which pkexec 2> /dev/null`"
GKSUDO="`which gksudo 2> /dev/null`"
KDESUDO="`which kdesudo 2> /dev/null`"
XHOST="`which xhost 2> /dev/null`"
GSETTINGS="`which gsettings 2> /dev/null`"

export MYUID=$(id -u)

if [ $MYUID = "0" ]; then

    ARGS=("$@")
    if [ "$1" == "---" ]; then
	ARGS=("${ARGS[@]:2}")
	eval $2
    fi
    #export QT_GRAPHICSSYSTEM=native
    export QT_X11_NO_MITSHM=1
    export QTDIR=
    export QT_PLUGIN_PATH=
    export LD_LIBRARY_PATH=$RSLIB:$LD_LIBRARY_PATH
    $RSBIN ${ARGS[@]} > /dev/null 2>&1

else

    # Enable xhost
    if [ -x $XHOST ]; then
	$XHOST local:root > /dev/null
    fi

    envi="export XDG_DATA_DIRS=$XDG_DATA_DIRS;export USER_HOME=$HOME"
    if [ -n "$USERNAME" ]; then envi="$envi;export USER_NAME=$USERNAME"; fi
    if [ -n "$LOGNAME" ]; then envi="$envi;export USER_LOGIN=$LOGNAME"; fi
    if [ -n "$DISPLAY" ]; then envi="$envi;export DISPLAY=$DISPLAY"; fi
    if [ -n "$XAUTHORITY" ]; then envi="$envi;export XAUTHORITY=$XAUTHORITY"; fi
    if [ -n "$XDG_CONFIG_DIRS" ]; then envi="$envi;export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS"; fi
    if [ -n "$XDG_CURRENT_DESKTOP" ]; then envi="$envi;export XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP"; fi
    if [ -n "$XDG_SESSION_TYPE" ]; then envi="$envi;export XDG_SESSION_TYPE=$XDG_SESSION_TYPE"; fi
    if [ -n "$KDEDIRS" ]; then envi="$envi;export KDEDIRS=$KDEDIRS"; fi
    if [ -n "$KDE_FULL_SESSION" ]; then envi="$envi;export KDE_FULL_SESSION=$KDE_FULL_SESSION"; fi
    if [ -n "$KDE_SESSION_VERSION" ]; then envi="$envi;export KDE_SESSION_VERSION=$KDE_SESSION_VERSION"; fi
    if [ -n "$DESKTOP_SESSION" ]; then envi="$envi;export DESKTOP_SESSION=$DESKTOP_SESSION"; fi
    if [ -x $GSETTINGS ]; then envi="$envi;export USER_ICON_THEME_NAME=`$GSETTINGS get org.gnome.desktop.interface icon-theme | tr -d \'`"; fi

    # Elevate (fixed)
    if [ -x "$GKSUDO" ]; then
         $GKSUDO --description $DESKFILE $RSSTARTUP $@
    elif [ -x "$KDESUDO" ]; then
        $KDESUDO $RSSTARTUP --- "$envi" $@
    elif [ -x "$PKEXEC" ]; then
        $PKEXEC $RSSTARTUP --- "$envi" $@
    else
        $TRAMPLIN $@ > /dev/null 2>&1
    fi

fi
