#!/bin/sh

launch() {
	app=$(printf "Notes
Files
Editor
Terminal
Multiplexer
LBRY
Chat
Music
Browser
Email
Processes" | 
		dmenu -i -p "Launcher")

case $app in 
	Notes) st -e vim "+cd ~/Notes/text" "+CtrlP";;
	Files) st -e nnn;;
	Editor) st -e vim;;
	Terminal) st;;
	Multiplexer) st -e tmux $*;;
	LBRY) lbry;;
	Chat) element-desktop;;
	Music) st -e ncmpcpp;;
	Browser) brave-browser;;
	Email) brave-browser mail.protonmail.com/login;;
	Processes) st -e htop;;
esac
}

action() {
	action=$(printf "Play Music
Pause Music
Toggle Music
Select VPN
Disable VPN
Enable VPN
VPN Status
Rebind Keys
Disable Bar
Enable Bar" |
		dmenu -i -p "Actions")

case $action in
	'Play Music') mpc play ;;
	'Pause Music') mpc pause ;;
	'Toggle Music') mpc toggle ;;
	'Rebind Keys') setup-xbindkeys;;
	'Disable Bar') tmux set -g status off;;
	'Enable Bar') tmux set -g status on;;
esac
}

screenshot() {
	method=$(printf "clipboard
file
both" |
	dmenu -i -p "Screenshot")

	if [ $method = "file" ]; then
		scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
			-s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png 
	fi

	if [ $method = "clipboard" ]; then
		scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
			-s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png\
			-e "xclip $f; rm $f"
	fi

	if [ $method = "both" ]; then
		scrot --note "-f 'LiterationSans Nerd Font Book/11' -x 10 -y 20 -c 255,0,0,255 -t 'Hi'"\
			-s ~/Pictures/screenshots/screenshot-%Y-%m-%d_$wx$h.png\
			-e "xclip $f;"
	fi
}

ddg() {
	search_string="$(printf "" | dmenu -p 'ddg')"
	string_length=$(expr length "$search_string")
	char=''; new_string=''; 

	i=1
	while [ $i -le $string_length ]
	do
		char=$(expr substr "$search_string" $i 1)
		new_string="$new_string$(rawurlencode "$char")"
		# printf "this is newstring %s\n" "$new_string"
		i=$(expr $i + 1)
	done
	search="https://duckduckgo.com/?q=$new_string"
	brave-browser "$search"
}

rawurlencode() {
	case "$1" in
		[-_.~a-zA-Z0-9] ) result=$1; printf $result;;
			* ) result=$(printf '%%%02x' "'$1"); printf %$result;;
	esac
}

case $1 in
	launch) launch;;
	action) action;;
	cmd) action;;
	ddg) ddg;;
	*) printf "Invalid argument";;
esac