#!/bin/bash

. /usr/local/lib/desktop-session/lib-desktop-session.sh
. /usr/local/lib/desktop-session/desktop-session-file-locations.sh
#Export for gtk
export GTK2_RC_FILES="$HOME/.gtkrc-2.0";

help() {
cat <<Help
Help:
-fm | --file-manager    Start the default file manager
      --follow          Set Default file manager to follow 
                        session icon manager / fm
-t  | --terminal        Start the default terminal emulator
-e  | --email           Start the default email client
-te | --text-editor     Start the default text editor
-b  | --browser         Start the default web browser
-i  | --images          Start the default image viewer
-v  | --video           Start the default video player
-a  | --audio           Start the default audio player
-r 	| --root			Start the user default as root user
Help
}

function run_case {
args=$(echo "$@" |sed "s/$1//ig")

case $1 in 
-fm|--file-manager)
    if [ "$2" = "--follow" ]; then
        args=$(echo "$args" |sed "s/$2//ig")
        case `head -1 $desktop_file` in
        rox-*)
            Exec="rox-filer $args"
            ;;
        space-*)
            Exec="spacefm $args"
            ;;
        *)
            Exec="rox-filer $args"
            ;;
        esac
    fi
    Desktop_File=$Desktop_Prefix"file-manager.desktop"
    ;;
-t|--terminal)          Desktop_File=$Desktop_Prefix"terminal.desktop"      
                        if [ -n "$args" ]; then
                        args="-e $args"
                        fi;;
-e|--email)             Desktop_File=$Desktop_Prefix"email.desktop"         ;;
-te|--text-editor)      Desktop_File=$Desktop_Prefix"editor.desktop"        ;;
-b|--browser)           Desktop_File=$Desktop_Prefix"web-browser.desktop"   ;;
-i|--images)            Desktop_File=$Desktop_Prefix"image-viewer.desktop" ;;
-v|--video)             Desktop_File=$Desktop_Prefix"video-player.desktop"  ;;
-a|--audio)             Desktop_File=$Desktop_Prefix"audio-player.desktop"  ;;
-r|--root)				Use_Root=True                                       ;;
-h|--help)              help; exit;  										;;
*)                      echo "Error: $1 not an option"; help; exit;         ;;
esac

} 
#Desktop_Prefix="/usr/share/applications/desktop-defaults-"
if [ -d ~/.local/share/desktop-defaults/ ]; then
    Desktop_Prefix="$HOME/.local/share/desktop-defaults/"
else
    Desktop_Prefix="/usr/share/desktop-defaults/"
fi

if [ "$1" = "-r" ]; then
	root_clean=$(echo "$@" |sed "s/$1//ig")
	run_case $root_clean
	run_as_root=True
else
	run_case $@
fi

if [ ! -r "$Desktop_File" ]; then
    echo "$Desktop_File is not readable or does not exist";
    exit;
fi

if [ "$run_as_root" = "True" ]; then
	Exec=${Exec:-$(grep "^Exec" $Desktop_File |head -1|cut -d "=" -f2 |sed "s/%.*//ig" ) } 
	$(gksu "$Exec $args") &
	exit
else
	Exec=${Exec:-$(grep "^Exec" $Desktop_File |head -1|cut -d "=" -f2 |sed "s/%.*//ig" ) }
	$($Exec $args) &
    exit
fi
