#!/bin/sh
#
# install
#	устанавливает .desktop файл приложения
# install autorun
#	устанавливает .desktop файл приложения в автозагрузку
# install тщautorun
#	убирает .desktop файл приложения из автозагрузки
# install query
#	запрос состояния автозагрузки, печатает строку 'autorun" или "noautorun"
#	код возврата == 0 - установлена автозагрузка приложения
#	код возврата != 0 - автозагрузка приложения не установлена
#

DesktopName=voice2med.desktop
AppName=DictationClient

dir=$(dirname $(realpath $0))
user=$(whoami)

# в папках  (см. https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
#   $XDG_CONFIG_HOME или ~/.config
#   $XDG_CONFIG_DIRS или /etc/xdg
# ищет файл autostart/voice2med.desktop
# если файл не найден, то автостарт отключен
# если файл найден, но в нем указан параметр Hidden=true, то автостарт отключен
# если параметр Hidden=false или отстутствует, то автостарт включен
query_autostart()
{
# пользовательсткая папка xdg
    xdgdirs=$XDG_CONFIG_HOME
    if [ -z "$xdgdirs" ]; then
	xdgdirs=~/.config
    fi
# системная папка xdg
    if [ -z "$XDG_CONFIG_DIRS" ]; then
	xdgdirs=$xdgdirs:/etc/xdg
    else
	xdgdirs=$xdgdirs:$XDG_CONFIG_DIRS
    fi

    for xdgdir in $(echo "$xdgdirs" | sed -e "s/:/ /g"); do
	echo "Try $xdgdir/autostart/$DesktopName"
	if [ -f "$xdgdir/autostart/$DesktopName" ]; then
	# если есть файл автостарта и в нем указано Hidden=true, то автостарт отключен
	    if grep -qi "^\s*hidden\s*=\s*true" "$xdgdir/autostart/$DesktopName"; then
		echo "noautorun"
		return 1
	    else
	# если есть файл автостарта и в нем указано Hidden=false или параметр Hidden отсутсвует, то включен автостарт
    		echo "autorun"
    		return 0
	    fi
	fi
    done
    echo "noautorun"
    return 1
}

# создает файл autostart/voice2med.desktop в пользовательской папке конфигурации xdg: $XDG_CONFIG_HOME или ~/.config
enable_autostart()
{
    if [ -z "$XDG_CONFIG_HOME" ]; then
	autostartdir=~/.config/autostart
    else
	autostartdir=$XDG_CONFIG_HOME/autostart
    fi
    mkdir -p "$autostartdir"
    # задержка 5 сек и старт программы
    sed -e "s:_AppRunPath_:/bin/sh -c 'sleep 5 \\&\\& \"$dir/$AppName\"':g" \
        -e "s:_IconPath_:$dir/$AppName.png:g" \
    "$dir/$DesktopName" > "$autostartdir/$DesktopName"
}

# создает файл applications/voice2med.desktop в пользовательской папке конфигурации xdg: $XDG_CONFIG_HOME или ~/.config
# и устанавливает параметр Hidden=true 
disable_autostart()
{
    if [ -z "$XDG_CONFIG_HOME" ]; then
	autostartdir=~/.config/autostart
    else
	autostartdir=$XDG_CONFIG_HOME/autostart
    fi
    mkdir -p "$autostartdir"
    # задержка 5 сек и старт программы
    sed -e "s:_AppRunPath_:/bin/sh -c 'sleep 5 \\&\\& \"$dir/$AppName\"':g" \
        -e "s:_IconPath_:$dir/$AppName.png:g" \
        -e "$ a Hidden=true" \
    "$dir/$DesktopName" >"$autostartdir/$DesktopName"
}

# создает файл autostart/voice2med.desktop в пользовательской папке конфигурации xdg: $XDG_DATA_HOME или ~/.local/share
install_menu()
{
    if [ -z "$XDG_DATA_HOME" ]; then
	menudir=~/.local/share/applications
    else
	menudir=$XDG_DATA_HOME/applications
    fi

    echo "Install DictationClient in $dir for user $user"

    mkdir -p "$menudir"
    sed -e "s:_AppRunPath_:$dir/$AppName:g" \
        -e "s:_IconPath_:$dir/$AppName.png:g" \
    "$dir/$DesktopName" >"$menudir/$DesktopName"
}

case "$1" in
    "query" ) 
	query_autostart
    ;;
    
    "autorun" )
	enable_autostart
    ;;
    
    "noautorun" )
	disable_autostart
    ;;
    
    "" )
	install_menu
    ;;
esac;
