#!/bin/sh
#*********************************************************************************************************
#*   __     __               __     ______                __   __                      _______ _______   *
#*  |  |--.|  |.---.-..----.|  |--.|   __ \.---.-..-----.|  |_|  |--..-----..----.    |       |     __|  *
#*  |  _  ||  ||  _  ||  __||    < |    __/|  _  ||     ||   _|     ||  -__||   _|    |   -   |__     |  *
#*  |_____||__||___._||____||__|__||___|   |___._||__|__||____|__|__||_____||__|      |_______|_______|  *
#* http://www.blackpantheros.eu | http://www.blackpanther.hu - kbarcza[]blackpanther.hu * Charles Barcza *
#*************************************************************************************(c)2002-2011********

#---------------------------------------------------------------
# Project         : blackPanther OS
# Module          : bin
# File            : default-browser
# Version         : 0.2
# Author          : Charels Barcza	
# Created On      : Tue Aug 31 16:26:54 2007, 2008, 2009
# Purpose         : launch a web browser
#---------------------------------------------------------------
. /etc/blackPanther-default-apps.conf

appname=browser
if [ -f ~/.personal-browser ];then
    . ~/.personal-browser
    echo "Presonal conf found!"
fi

set_a_browser() {
echo "BROWSER=$1" > ~/.personal-browser
echo "Personal browser definied, please restart `basename $0` without parameter."
exit
}


if [ "$1" = "-s" ];then
    echo "Force define user browser.."
    set_a_browser $2
elif [ "$1" = "-u" ];then
    rm -f $HOME/.personal-browser
    echo "Clear definied personal browser conf.."
    exit
elif [ "$1" = "-h" ];then
    echo ""
    echo -e "${GRN}This is a$BLK blackPanther OS$GRN specific tool"
    echo ""
    echo -e "$MAG  Usage:"
    echo -e "$YEL       `basename $0` -s $DEF Set a personal ${appname} (You conf file: $HOME/.personal-${appname})"
    echo -e "$YEL       `basename $0` -u $DEF Unset definied ${appname} (Remove you conf file: $HOME/.personal-${appname})"
    echo -e "$YEL       `basename $0` -h $DEF This screen"
    echo ""
    echo -e "$CYN  [$RED Example:$CYN `basename $0` -s opera$RED OR to autodetect:$CYN `basename $0`]$DEF"
    echo ""
    exit
fi
# If we got any argument, we can call xdg-open, if we haven´t already done it
#
if [ -n "$*" -a -z "$THROUGHXDG" ]&&[ `which kfmclient 2>/dev/null` ]; then
	# Lock against bug #29599
	export THROUGHXDG=1
	exec xdg-open "$@"
fi

#
# No URL specified, so we must find a proper browser for the current env
#

strip_browser_var() {
    if [[ -n "$BROWSER" ]]; then
	if [[ `basename "$BROWSER"` == "www-browser" ]]; then
	    unset BROWSER
	elif [[ `basename "$BROWSER"` == "default-browser" ]]; then
	    unset BROWSER
	else
	    set $BROWSER
	    if ! which $1 > /dev/null 2>&1; then
		unset BROWSER
	    fi
	fi
    fi
}


strip_browser_var
if [[ -z "$BROWSER" ]]; then
 
    # using GNOME
    if [[ -n "$GNOME_DESKTOP_SESSION_ID" ]]; then
	BROWSER=`gconftool -g /desktop/gnome/url-handlers/http/command | sed -e 's/ %s//'`
	if [[ `gconftool -g /desktop/gnome/url-handlers/http/needs_terminal` == "true" ]]; then
	    BROWSER="xvt -e $BROWSER"
	fi
    fi

    #using KDE
    if [[ -n "$KDE_FULL_SESSION" ]]; then
	NEWBROWSER=`kreadconfig --group General --key BrowserApplication 2>/dev/null`
	if [[ -n "$NEWBROWSER" ]]; then
	    BROWSER=`echo $NEWBROWSER | sed -e 's/\(.*\).desktop/\1/'`
	    if [[ x"$KDE_SESSION_VERSION" == x"4" ]]; then   # KDE 4
		BROWSER="dbus-send --type=method_call --dest=org.kde.klauncher /KLauncher org.kde.KLauncher.start_service_by_desktop_name string:$BROWSER array:string: array:string: string: boolean:true"
	    else                                        # KDE 3
		BROWSER="dcop klauncher default start_service_by_desktop_name(QString,QStringList) $BROWSER [ ]"
	    fi
	fi
    fi

    #using XFCE
    if xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then
	    BROWSER="exo-open --launch WebBrowser"
    fi


    strip_browser_var
    
    [[ -z "$BROWSER" ]] && BROWSER=`which chromium-browser 2> /dev/null` 
    [[ -z "$BROWSER" ]] && BROWSER=`which google-chrome 2> /dev/null` 
    [[ -z "$BROWSER" ]] && BROWSER=`which firefox 2> /dev/null` 
    [[ -z "$BROWSER" ]] && BROWSER=`which firefox3 2> /dev/null` 
    [[ -z "$BROWSER" ]] && BROWSER=`which mozilla-firefox 2> /dev/null` 
    [[ -z "$BROWSER" ]] && BROWSER=`which iron 2> /dev/null` 
    [[ -z "$BROWSER" ]] && BROWSER=`which Flock 2> /dev/null` 
    [[ -z "$BROWSER" ]] && [[ -n "$KDE_FULL_SESSION" ]] && which kfmclient > /dev/null 2>&1 && BROWSER="kfmclient openProfile webbrowsing"
    [[ -z "$BROWSER" ]] && BROWSER=`which epiphany 2> /dev/null`
    [[ -z "$BROWSER" ]] && BROWSER=`which galeon 2> /dev/null`
    [[ -z "$BROWSER" ]] && BROWSER=`which rekonq 2> /dev/null`
    [[ -z "$BROWSER" ]] && BROWSER=`which seamonkey 2> /dev/null`
    [[ -z "$BROWSER" ]] && which kfmclient > /dev/null 2>&1 && BROWSER="kfmclient openProfile webbrowsing"
    [[ -z "$BROWSER" ]] && which w3m > /dev/null 2>&1 && BROWSER="default-terminal -e w3m"
    [[ -z "$BROWSER" ]] && which links > /dev/null 2>&1 && BROWSER="default-terminal -e links"
    [[ -z "$BROWSER" ]] && which lynx > /dev/null 2>&1 && BROWSER="default-terminal -e lynx"
fi

if [[ -n "$BROWSER" ]]; then 
    if [[ -n "$THROUGHXDG" ]]; then
	# xdg couldn't handle the url
	exec $BROWSER $@
    else
	exec $BROWSER $*
    fi
else
    xmsg=`which kdialog 2>/dev/null || which zenity 2>/dev/null`
    [ -n "$DISPLAY" ] && $xmsg --error "Sorry. Browser not detected, please install on PC (etc: installing firefox)"
    [ ! -n "$DISPLAY" ] && echo -n "Sorry. Browser not detected! Please install on PC (etc: installing firefox)"
fi

# www-browser ends here
