commit 9aca62f78dc83654ee972bd799af2f916a98b50d Author: zerf58 <107778762+zerf58@users.noreply.github.com> Date: Tue Mar 26 20:03:07 2024 -0700 buttons.sh latest diff --git a/buttons.sh b/buttons.sh new file mode 100644 index 0000000..8a145af --- /dev/null +++ b/buttons.sh @@ -0,0 +1,233 @@ +#!/bin/bash +shopt -s nocasematch #sets case insensitive option for the shell +websites=("youtube" "pbs") + + +### if no specific commands found run these +all(){ + case $1 in + ### navigation etc. + "play") + #sleep .5 + xdotool_helper "key space" + ;; + "fast_forward") + xdotool_helper "key Right" + ;; + "rewind") + xdotool_helper "key Left" + ;; + "forward" | "back" | "split_up" | "split_down") + sleep .1 + echo "no default action assigned to $1" + ;; + "split_right") + bluetoothctl disconnect 4C:B9:9B:11:4B:31 + ;; + "split_left") + sh /home/htpc/scripts/xrandr.sh + ;; + + ### top buttons + "main" | "notification" | "settings" | "task_manager" | "search") + echo "no default action assigned to $1" + ;; + "browser") + helper_find_or_open firefox + ;; + "file_explorer") + helper_find_or_open kodi + ;; + "action_center") + helper_find_or_open steam + ;; + + ### arrow buttons + "desktop") + ;; + "tasks") + ;; + + ### test + "test") + #test code here, run with buttons.sh test + echo "sucessful test" + ;; + *) + echo "unexpected action: ${1-}" + ;; + esac + +} + + + + +firefox_youtube(){ + firefox_init + + split_up(){ + + xdotool_helper "key f" + } + search(){ + ff_search + } + play(){ + echo "ffyt play" + xdotool_helper "key k" + } + desktop(){ + ff_home "https://www.youtube.com" + } + split_right(){ + xdotool_helper "key F11" + } +} + +firefox_pbs(){ + firefox_init + + split_up(){ + xdotool_helper "mouse move 500 300" + xdotool_helper "click 1 click 1" + } + play(){ + xdotool_helper "mouse move 500 300" + xdotool_helper "click 1" + } + desktop(){ + ff_home "https://www.pbs.org" + } +} + + +Kodi(){ + + split_up(){ + xdotool_helper "key Tab" + } + search(){ + kodi-send --action="VideoLibrary.Search" + } + desktop(){ + kodi-send --action="PreviousMenu" + } + refresh(){ + kodi-send --action="UpdateLibrary(video)" + } + +} + +steam_bp(){ + + desktop(){ + xdotool_helper "key alt+Enter" + } +} + +steam_lp(){ + + desktop(){ + xdotool_helper "mousemove 1872 13" + xdotool_helper "click 1" + } +} + +Xfdesktop(){ + + search(){ + rofi -modi drun,run -show drun + } + next(){ + xfdesktop -N + } +} + +firefox(){ + echo "return and run all()" +} + +eddie(){ + echo "return and run all()" +} + +mousepad(){ + echo "return and run all()" +} + +other(){ + echo "return and run all()" +} + + + + +### helpers +firefox_init(){ + + ff_home(){ + xdg-open $1 + sleep .3 + xdotool_helper "key ctrl+shift+Tab" + sleep .1 + xdotool_helper "key ctrl+w" + + } + ff_search(){ + sleep .2 + xdotool_helper "key slash" + sleep .2 + xdotool_helper "key ctrl+a" + sleep .2 + xdotool_helper "key BackSpace" + } +} + +helper_find_or_open() { + windows=$(wmctrl -l) + if [[ "$windows" == *"$1"* ]]; then + xdotool windowactivate "$(wmctrl -l | grep -i "$1" | cut -d " " -f 1)" + else + nohup "$1" >/dev/null 2>&1 & + fi +} + +xdotool_helper(){ + sleep .2 + xdotool $1 +} + +### get active window +target="$(xdotool getactivewindow getwindowclassname)" + +if [[ "$target" == *"firefox"* ]]; then + name="$(xdotool getactivewindow getwindowname)" + for ws in "${websites[@]}"; do + if [[ "$name" == *"$ws"* ]]; then + target+="_$ws" + fi + done +elif [[ "$target" == *"steam"* ]]; then + name="$(xdotool getactivewindow getwindowname)" + if [[ "$name" == *"picture"* ]]; then + target+="_bp" + else + tagret+="_lp" + fi +fi + +printf "action: %s\ntarget: %s\n" "$1" "$target" + +### init target functions +$target + +### find and run $1 +if [[ $(type -t $1) == function ]]; then + $1 +else + echo "program specific method not found calling all_$1" + all $1 + #echo "unexpected action: ${1-}" +fi +