#!/bin/bash

Info () {
title="Info"
author="Peter Starfinger"
mail="E-Mail: info@die-starfingers.de"
year="2021"
app="$(basename $0)"
msgid="The Starbuntu application
<i>\$app</i>
was written by"
info="$(gettext "$msgid" | (export PATH `envsubst --variables "$msgid"`; envsubst "$msgid"))"

yad --center --fixed --title="$title" --window-icon="/usr/share/icons/gnome/48x48/status/info.png" --image="/usr/share/icons/gnome/48x48/status/info.png" --borders=20 --text="$info"$'\n'$'\n'"$author"$'\n'"$mail"$'\n'$'\n'"$year"$'\n' --text-align=center --selectable-labels --button="OK" &
wunwa "$title" > /dev/null; xdotool key Home key Down
}

browsers () {
    stdbrw=$(ls -l /etc/alternatives/x-www-browser)
    stdbrw=${stdbrw##*\/}
    brws=$(update-alternatives --list x-www-browser)
    brw2=$(echo $brws | sed "s/\/usr\/bin\/$stdbrw//g")    
    brw2=${brw2##*\/}
}

webaddress_standardbrowser () {
    xdotool mousemove ${act_window[2]} ${act_window[3]} sleep 0.1 mousemove_relative 400 60 sleep 0.1 click 1 sleep 0.1 key Home sleep 0.2 key Shift+End sleep 0.2 key Control+c
    sleep 0.2
}

webaddress_browser2 () {
    xdotool mousemove ${act_window[2]} ${act_window[3]} sleep 0.2 key Alt+f sleep 0.1 mousemove_relative 100 245 sleep 0.1 click 1
    sleep 0.1
}


[ "$1" = "info" ] && Info && exit 0
url="$@"
browsers
stdbrw="${stdbrw%%-*}"; brw2="${brw2%%-*}"

if [ -z "$url" ]; then
    url=$(xclip -o -se p)
    if [[ ! "${url}" =~ "://" ]] && [ "${url:0:7}" != "mailto:" ]; then
	w_id=$(printf '%x\n' $(xdotool getactivewindow))
	act_window=($(wmctrl -lG | grep $w_id))
	if [[ ${act_window[@]} =~ ${stdbrw:1} ]]; then
	    webaddress_standardbrowser
	elif [[ ${act_window[@]} =~ ${brw2:2:4}|N/A ]]; then
	    webaddress_browser2
	fi
	sleep 0.2
	url="$(xclip -o -se p)"
	[[ ! "${url}" =~ "://" ]] && url=""
    fi
fi

title=$"Create URL Link"
if [ -n "$url" ]; then
    [[ ! -d $HOME/Urls ]] && mkdir $HOME/Urls
    contents="$(curl --no-progress-meter --user-agent Chrome/117.0.0.0 "$url")"
    [ -z "$contents" ] && contents="$(curl --no-progress-meter "$url")"
    contents="$(tr -d '\n' <<< $contents)"
    f_name="$(echo "$contents" | grep -o "<title>[^>]*>" | head -n 1)"
    f_name="$(echo "$f_name" | sed -E 's/<[^>]*>([^<]*)<.*/\1/')"
    f_name="$(echo "$f_name" | xargs)"
    if [ -n "$f_name" ]; then
	f_name="$(echo "$f_name" | sed 's/ /_/g; s/?//g; s/\//-/g; s/|//g')"
    else
	f_name=$(echo "$url" | sed 's/:/_/g; s/\/\///g; s/www\.//g; s/\//_/g; s/ / /g; s/\./_/g')
    fi
    text=$"&#9;<b>Expose URL?&#10;&#9;If no it gets saved&#10;&#9;as *.url!</b>&#10;"
    cancel=$"Cancel"
    msg=$"&#9;<b>The URL bookmark&#10;&#9;'$f_name'&#10;&#9;is to be added to the folder ~/Urls.&#10;&#9;Edit bookmark name:</b>&#10;"
    re1=$"Yes"; re2=$"No"
    yad --center --title="$title" --window-icon="$HOME/.icons/webbrowser.png" --image="dialog-question" --borders=40 --fixed --text="$text" --button=$cancel:255 --button="Info":"$0 info" --button=$re2:1 --button=$re1:0
    err=$?
    if [ $err -eq 255 ]; then
	exit 255
    else
	# url=$(sed 's/\&/\&amp\;/g' <<< "$url")
	if [ $err -eq 0 ]; then
	    echo "[InternetShortcut]" > "$HOME/Urls/$f_name.url"
	    echo "URL=$url" >> "$HOME/Urls/$f_name.url"
	    expose-url "$HOME/Urls/$f_name.url"
	    rm "$HOME/Urls/$f_name.url"
	else
	    f_name=`yad --center --title="$title" --window-icon="$HOME/.icons/webbrowser.png" --fixed --borders=40 --image="dialog-question" --text="$msg" --entry-text="$f_name" --entry --button="Info":"$0 info" --button="OK":0`
	    echo "[InternetShortcut]" > "$HOME/Urls/$f_name.url"
	    echo "URL=$url" >> "$HOME/Urls/$f_name.url"
	fi
    fi
else
    text=$"&#10;&#9;<b>No URL specified!</b>&#10;&#10;"
    button=$"Help"
    lang_dir=$"C"
    yad --center --title="$title" --window-icon="$HOME/.icons/webbrowser.png" --borders=40 --fixed --image="dialog-warning" --text="$text" --button=$button:"yelp /usr/share/help/$lang_dir/Starbuntu/starbuntu-apps-details.page#save-url" --button="Info":"$0 info" --button="OK":0
fi

