about summary refs log tree commit diff
path: root/pos-dyntercomms.sh
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@librem.one>2024-10-14 19:07:18 -0400
committerZach DeCook <zachdecook@librem.one>2024-10-14 19:07:18 -0400
commit94f4c3d2ab90dd752eb0a86faf509b986fb6735a (patch)
tree24e59a0fc4b219f43587bd594987f204546c83e7 /pos-dyntercomms.sh
parentd087ea29e68014179a6ce1fddd4880b570963a55 (diff)
downloadpos-dyntercomms-94f4c3d2ab90dd752eb0a86faf509b986fb6735a.tar.gz
some improvements
Diffstat (limited to 'pos-dyntercomms.sh')
-rwxr-xr-xpos-dyntercomms.sh672
1 files changed, 672 insertions, 0 deletions
diff --git a/pos-dyntercomms.sh b/pos-dyntercomms.sh
new file mode 100755
index 0000000..2110bd3
--- /dev/null
+++ b/pos-dyntercomms.sh
@@ -0,0 +1,672 @@
+#!/bin/sh
+# SPDX-License-Identifier: AGPL-3.0-only
+# Copyright 2022 Sxmo Contributors
+# derived from sxmo_hook_contextmenu.sh
+# Copyright 2024 Zach DeCook
+
+setComms(){
+activewmclass="$1"
+activetitle="$2"
+if ! test "$activewmclass"; then
+	json="$(hyprctl -j -i 0 activewindow)"
+	activewmclass="$(printf "%s" "$json" | jq -r .class)"
+	activetitle="$(printf "%s" "$json" | jq -r .title)"
+fi
+WMNAME="$activewmclass $activetitle"
+echo $WMNAME
+
+case "$activewmclass" in
+	*mpv*)
+		# MPV
+		#pause seekbw seekfw volu vold 
+		#speedup         speeddown
+		#screenshot loopmark info seekinfo
+		c="' ','Left','Right','0','9','BracketRight','BracketLeft','s','l','i','o'"
+		WINNAME=Mpv
+		;;
+	*feh*)
+		# Feh
+		CHOICES="
+			$icon_arr Next          ^ 1 ^ sxmo_type -k Space
+			$icon_arl Previous      ^ 1 ^ sxmo_type -k BackSpace
+			$icon_zmi Zoom in       ^ 1 ^ sxmo_type -k up
+			$icon_zmo Zoom out      ^ 1 ^ sxmo_type -k down
+			$icon_exp Zoom to fit   ^ 1 ^ sxmo_type -k slash
+			$icon_shr Zoom to fill  ^ 1 ^ sxmo_type '!'
+			$icon_rol Rotate        ^ 1 ^ sxmo_type -k less
+			$icon_ror Rotate        ^ 1 ^ sxmo_type -k greater
+			$icon_a2y Flip          ^ 1 ^ sxmo_type -k underscore
+			$icon_a2x Mirror        ^ 1 ^ sxmo_type -k bar
+			$icon_inf Toggle filename ^ 1 ^ sxmo_type d
+		"
+		WINNAME=Feh
+		;;
+	*sxiv*)
+		# Sxiv
+		CHOICES="
+			$icon_arr Next          ^ 1 ^ sxmo_type -k Space
+			$icon_arl Previous      ^ 1 ^ sxmo_type -k BackSpace
+			$icon_zmi Zoom in       ^ 1 ^ sxmo_type -k equal
+			$icon_zmo Zoom out      ^ 1 ^ sxmo_type -k minus
+			$icon_rol Rotate        ^ 1 ^ sxmo_type -k less
+			$icon_ror Rotate        ^ 1 ^ sxmo_type -k greater
+			$icon_a2y Flip          ^ 1 ^ sxmo_type -k question
+			$icon_a2x Mirror        ^ 1 ^ sxmo_type -k bar
+			$icon_grd Thumbnail     ^ 0 ^ sxmo_type -k Return
+		"
+		WINNAME=Sxiv
+		;;
+	*imv*)
+		# imv
+		CHOICES="
+			$icon_arr Next          ^ 1 ^ sxmo_type -k Right
+			$icon_arl Previous      ^ 1 ^ sxmo_type -k Left
+			$icon_zmi Zoom in       ^ 1 ^ sxmo_type -k i
+			$icon_zmo Zoom out      ^ 1 ^ sxmo_type -k minus
+			$icon_exp Zoom to fit   ^ 1 ^ sxmo_type -k r
+			$icon_ror Rotate        ^ 1 ^ sxmo_type -M ctrl r
+			$icon_inf Toggle filename ^ 1 ^ sxmo_type -k d
+		"
+		WINNAME=Imv
+		;;
+	*kasts*)
+		CHOICES="
+			$icon_mus Audio ^ 0 ^ sxmo_audio.sh
+			$icon_bth Bluetooth ^ 0 ^ sxmo_bluetoothmenu.sh
+			"
+		WINNAME="Kasts"
+		;;
+	*sthotkeys*)
+		#  St hotkeys
+		CHOICES="
+			Send Ctrl-C      ^ 0 ^ sxmo_type -M Ctrl -k c
+			Send Ctrl-Z      ^ 0 ^ sxmo_type -M Ctrl -k z
+			Send Ctrl-L      ^ 0 ^ sxmo_type -M Ctrl -k l
+			Send Ctrl-D      ^ 0 ^ sxmo_type -M Ctrl -k d
+			Send Ctrl-A      ^ 0 ^ sxmo_type -M Ctrl -k a
+			Send Ctrl-B      ^ 0 ^ sxmo_type -M Ctrl -k b
+			Send ESC:w       ^ 0 ^ sxmo_type -k Escape -s 300 -M Shift -k semicolon -m Shift -k w -k Return
+			Send ESC:wq      ^ 0 ^ sxmo_type -k Escape -s 300 -M Shift -k semicolon -m Shift -k w -k q -k Return
+			Send ESC:wq!     ^ 0 ^ sxmo_type -k Escape -s 300 -M Shift -k semicolon -m Shift -k q -k exclam -k Return
+		"
+		WINNAME=St
+		;;
+	*foot*|*st*|Terminal|*terminal*|org.gnome.vte.application|*alacritty*)
+		# These git commands only launch the editor.
+		case "$WMNAME" in
+			*"git add"*|*"git bugreport"*|*"git commit"*|*"git merge"*|*"git notes"*|*"git rebase"*|*"git replace"*|*"git send-email"*|*"git svn"*)
+				WMNAME="$WMCLASS $EDITOR"
+				;;
+		esac
+
+		# First we try to handle the app running inside the terminal:
+		case " $WMNAME " in
+		*" vi "*|*" vim "*|*" vis "*|*" nvim "*|*neovim*|*kakoune*)
+			#Vim in foot
+			CHOICES="
+				$icon_cls Save and Quit    ^ 0 ^ sxmo_type -k Escape -s 300 ':wq' -k Return
+				$icon_sav Save             ^ 0 ^ sxmo_type -k Escape -s 300 ':w' -k Return
+				$icon_cls Quit without saving  ^ 0 ^ sxmo_type -k Escape -s 300 ':q!' -k Return
+				$icon_aru Scroll up        ^ 1 ^ sxmo_type -M Ctrl u
+				$icon_ard Scroll down      ^ 1 ^ sxmo_type -M Ctrl d
+				$icon_trm Command prompt   ^ 0 ^ sxmo_type -k Escape -s 300 ':'
+				$icon_pst Paste Selection  ^ 0 ^ sxmo_type -k Escape -s 300 -k quotedbl -k asterisk -k p
+				$icon_pst Paste Clipboard  ^ 0 ^ sxmo_type -k Escape -s 300 -k quotedbl -k plus -k p
+				$icon_fnd Search           ^ 0 ^ sxmo_type -k Escape -s 300 /
+				$icon_arr Next buffer      ^ 1 ^ sxmo_type -k Escape -s 300 ':bn' -k Return
+				$icon_arl Previous buffer  ^ 1 ^ sxmo_type -k Escape -s 300 ':bp' -k Return
+				$icon_zmi Zoom in          ^ 1 ^ sxmo_type -k Prior
+				$icon_zmo Zoom out         ^ 1 ^ sxmo_type -k Next
+				$icon_mnu Terminal menu    ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=Vim
+			;;
+		*nano*)
+			#Nano in foot
+			CHOICES="
+				$icon_aru Scroll up       ^ 1 ^ sxmo_type -k Prior
+				$icon_ard Scroll down     ^ 1 ^ sxmo_type -k Next
+				$icon_sav Save            ^ 0 ^ sxmo_type -M Ctrl o
+				$icon_cls Quit            ^ 0 ^ sxmo_type -M Ctrl x
+				$icon_pst Paste           ^ 0 ^ sxmo_type -M Ctrl u
+				$icon_itm Type complete   ^ 0 ^ sxmo_type -M Shift -M Ctrl u
+				$icon_cpy Copy complete   ^ 0 ^ sxmo_type -M Shift -M Ctrl i
+				$icon_mnu Terminal menu   ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=Nano
+			;;
+		*micro*)
+			#Micro
+			CHOICES="
+				$icon_aru Scroll up       ^ 1 ^ sxmo_type -k Prior
+				$icon_ard Scroll down     ^ 1 ^ sxmo_type -k Next
+				$icon_prv Previous Tab    ^ 1 ^ sxmo_type -M Alt , -m Alt
+				$icon_nxt Next Tab        ^ 1 ^ sxmo_type -M Alt . -m Alt
+				$icon_sav Save            ^ 1 ^ sxmo_type -M Ctrl s -m Ctrl
+				$icon_cls Quit            ^ 0 ^ sxmo_type -M Ctrl q -m Ctrl
+				$icon_fnd Find            ^ 0 ^ sxmo_type -M Ctrl f -m Ctrl
+				$icon_fnd Find Previous   ^ 1 ^ sxmo_type -M Ctrl p -m Ctrl
+				$icon_fnd Find Next       ^ 1 ^ sxmo_type -M Ctrl n -m Ctrl
+				$icon_trm Command Bar     ^ 0 ^ sxmo_type -M Ctrl e -m Ctrl
+				$icon_cpy Copy            ^ 0 ^ sxmo_type -M Ctrl c -m Ctrl
+				$icon_pst Paste           ^ 0 ^ sxmo_type -M Ctrl v -m Ctrl
+				$icon_mnu Terminal menu   ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=Micro
+			;;
+		*tuir*)
+			#tuir (reddit client) in foot
+			CHOICES="
+				$icon_aru Previous      ^ 1 ^ sxmo_type k
+				$icon_ard Next          ^ 1 ^ sxmo_type j
+				$icon_aru Scroll up     ^ 1 ^ sxmo_type -k Prior
+				$icon_ard Scroll down   ^ 1 ^ sxmo_type -k Next
+				$icon_ret Open          ^ 0 ^ sxmo_type o
+				$icon_arl Back          ^ 0 ^ sxmo_type h
+				$icon_arr Comments      ^ 0 ^ sxmo_type l
+				$icon_edt Post          ^ 0 ^ sxmo_type c
+				$icon_rld Refresh       ^ 0 ^ sxmo_type r
+				$icon_cls Quit          ^ 0 ^ sxmo_type q
+				$icon_zmi Zoom in       ^ 1 ^ sxmo_type -k Prior
+				$icon_zmo Zoom out      ^ 1 ^ sxmo_type -k Next
+				$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=tuir
+			;;
+		*w3m*)
+			#w3m
+			CHOICES="
+				$icon_arl Back          ^ 1 ^ sxmo_type b
+				$icon_glb Goto URL        ^ 1 ^ sxmo_type u
+				$icon_arr Next Link       ^ 1 ^ sxmo_type -k Tab
+				$icon_arl Previous Link   ^ 1 ^ sxmo_type -M Shift -k Tab
+				$icon_tab Open tab        ^ 0 ^ sxmo_type t
+				$icon_cls Close tab       ^ 0 ^ sxmo_type -M Ctrl q
+				$icon_itm Next tab        ^ 1 ^ sxmo_type -k braceRight
+				$icon_itm Previous tab    ^ 1 ^ sxmo_type -k braceLeft
+				$icon_zmi Zoom in          ^ 1 ^ sxmo_type -k Prior
+				$icon_zmo Zoom out          ^ 1 ^ sxmo_type -k Next
+				$icon_mnu Terminal menu   ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=w3m
+			;;
+		*ncmpcpp*)
+			#ncmpcpp
+			CHOICES="
+				$icon_lst Playlist        ^ 0 ^ sxmo_type 1
+				$icon_fnd Browser         ^ 0 ^ sxmo_type 2
+				$icon_fnd Search          ^ 0 ^ sxmo_type 3
+				$icon_nxt Next track      ^ 0 ^ sxmo_type -k greater
+				$icon_prv Previous track  ^ 0 ^ sxmo_type -k less
+				$icon_pau Pause           ^ 0 ^ sxmo_type p
+				$icon_stp Stop            ^ 0 ^ sxmo_type s
+				$icon_rld Toggle repeat   ^ 0 ^ sxmo_type r
+				$icon_sfl Toggle random   ^ 0 ^ sxmo_type z
+				$icon_itm Toggle consume  ^ 0 ^ sxmo_type R
+				$icon_mnu Terminal menu   ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=ncmpcpp
+			;;
+		*aerc*)
+			#aerc
+			CHOICES="
+				$icon_pau Archive	  ^ 1 ^ sxmo_type ':archive flat' -k Return
+				$icon_nxt Next Tab	  ^ 0 ^ sxmo_type ':next-tab' -k Return
+				$icon_prv Previous Tab	  ^ 0 ^ sxmo_type ':prev-tab' -k Return
+				$icon_cls Close Tab	  ^ 0 ^ sxmo_type ':close' -k Return
+				$icon_itm Next Part	  ^ 1 ^ sxmo_type ':next-part' -k Return
+				$icon_trm xdg-open Part	  ^ 0 ^ sxmo_type ':open' -k Return
+			"
+			WINNAME=aerc
+			;;
+		*less*|*"git blame"*|*"git diff"*|*"git grep"*|*"git help"*|*"git log"*|*"git stash"*|*"git tag"*|*"git var"*)
+			#less
+			CHOICES="
+				$icon_arr Page next       ^ 1 ^ sxmo_type ':n' -k Return
+				$icon_arl Page previous   ^ 1 ^ sxmo_type ':p' -k Return
+				$icon_cls Quit            ^ 0 ^ sxmo_type q
+				$icon_zmi Zoom in         ^ 1 ^ sxmo_type -M Ctrl +
+				$icon_zmo Zoom out        ^ 1 ^ sxmo_type -M Ctrl -k Minus
+				$icon_aru Scroll up       ^ 1 ^ sxmo_type -k Prior
+				$icon_ard Scroll down     ^ 1 ^ sxmo_type -k Next
+				$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=less
+			;;
+		*git*)
+			# git am, branch, config, tag (and other commands which launch both).
+			CHOICES="
+				$icon_fil ${PAGER:-less} menu ^ 0 ^ sxmo_appmenu.sh '$WMCLASS ${PAGER:-less}'
+				$icon_edt $EDITOR menu ^ 0 ^ sxmo_appmenu.sh '$WMCLASS $EDITOR'
+				$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=git
+			;;
+		*senpai*)
+			CHOICES="
+				$icon_aru Scroll up       ^ 1 ^ sxmo_type -k Prior
+				$icon_ard Scroll down     ^ 1 ^ sxmo_type -k Next
+				$icon_ac1 Previous Buffer ^ 1 ^ sxmo_type -M Alt -k Left
+				$icon_ac4 Next Buffer     ^ 1 ^ sxmo_type -M Alt -k Right
+				$icon_lst Toggle Channels ^ 0 ^ sxmo_type -k F7
+				$icon_usr Toggle Members  ^ 0 ^ sxmo_type -k F8
+			"
+			WINNAME=senpai
+			;;
+		*weechat*)
+			#weechat
+			CHOICES="
+				$icon_msg Hotlist Next            ^ 1 ^ sxmo_type -M Alt a
+				$icon_arl History Previous        ^ 1 ^ sxmo_type -M Alt -k Less
+				$icon_arr History Next            ^ 1 ^ sxmo_type -M Alt -k Greater
+				$icon_trm Buffer                  ^ 0 ^ sxmo_type '/buffer '
+				$icon_aru Scroll up               ^ 1 ^ sxmo_type -k Prior
+				$icon_ard Scroll down             ^ 1 ^ sxmo_type -k Next
+				$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=weechat
+			;;
+		*cmus*)
+			# cmus
+			# requires `:set set_term_title=false` in cmus to match the application
+			CHOICES="
+				$icon_itm Play            ^ 0 ^ cmus-remote -p
+				$icon_pau Pause           ^ 0 ^ cmus-remote -u
+				$icon_stp Stop            ^ 0 ^ cmus-remote -s
+				$icon_nxt Next track      ^ 0 ^ cmus-remote -n
+				$icon_prv Previous track  ^ 0 ^ cmus-remote -r
+				$icon_rld Toggle repeat   ^ 0 ^ cmus-remote -R
+				$icon_sfl Toggle random   ^ 0 ^ cmus-remote -S
+				$icon_mnu Terminal menu   ^ 0 ^ sxmo_appmenu.sh $WMCLASS
+			"
+			WINNAME=cmus
+			;;
+		*iamb*)
+			CHOICES="
+				$icon_aru Page Up          ^ 1 ^ sxmo_type.sh -k Escape -M Ctrl -k b
+				$icon_tab Toggle Selection ^ 0 ^ sxmo_type.sh -k Escape -M Ctrl -k W m
+				$icon_ard Page Down        ^ 1 ^ sxmo_type.sh -k Escape -M Ctrl -k f
+				$icon_ret Reply To Message ^ 0 ^ sxmo_type.sh -k Escape :reply -k Return
+				$icon_tab New Tab          ^ 0 ^ sxmo_type.sh -k Escape :tab rooms -k Return
+				$icon_arl Previous Tab     ^ 0 ^ sxmo_type.sh -k Escape :tabp -k Return
+				$icon_arr Next Tab         ^ 0 ^ sxmo_type.sh -k Escape :tabn -k Return
+				$icon_cls Close Tab        ^ 0 ^ sxmo_type.sh -k Escape :tabclose -k Return
+				$icon_win Split View       ^ 0 ^ sxmo_type.sh -k Escape :split -k Return
+				$icon_win Split View Vertical ^ 0 ^ sxmo_type.sh -k Escape :vsplit -k Return
+				$icon_msg Direct Messages  ^ 0 ^ sxmo_type.sh -k Escape :dms -k Return
+				$icon_grp Rooms            ^ 0 ^ sxmo_type.sh -k Escape :rooms -k Return
+				$icon_glb Spaces           ^ 0 ^ sxmo_type.sh -k Escape :spaces -k Return
+				$icon_sav Download         ^ 0 ^ sxmo_type.sh -k Escape :download -k Return
+				$icon_cls Close View/Quit  ^ 0 ^ sxmo_type.sh -k Escape :quit -k Return
+			"
+			WINNAME=iamb
+			;;
+		*)
+			# Now we fallback to the default terminal menu
+			case "$WMCLASS" in
+				*st*)
+					STSELMODEON="$(
+						printf %s "$XPROPOUT" | grep -E '^_ST_SELMODE.+=' | cut -d= -f2 | tr -d ' '
+					)"
+					CHOICES="
+						$icon_itm Type complete   ^ 0 ^ sxmo_type -M Ctrl -M Shift -k u
+						$icon_cpy Copy complete   ^ 0 ^ sxmo_type -M Ctrl -M Shift -k i
+						$icon_itm Selmode $(
+							[ "$STSELMODEON" = 1 ] &&
+							printf %b "$icon_ton" ||
+							printf %b "$icon_tof"
+							printf %b '^ 0 ^ sxmo_type -M Ctrl -M Shift -k s'
+						)
+						$([ "$STSELMODEON" = 1 ] && echo 'Copy selection ^ 0 ^ sxmo_type -M Ctrl -M Shift -k c')
+						$icon_pst Paste           ^ 0 ^ sxmo_type -M Ctrl -M Shift -k v
+						$icon_zmi Zoom in         ^ 1 ^ sxmo_type -M Ctrl -M Shift -k Prior
+						$icon_zmo Zoom out        ^ 1 ^ sxmo_type -M Ctrl -M Shift -k Next
+						$icon_aru Scroll up       ^ 1 ^ sxmo_type -M Ctrl -M Shift -k b
+						$icon_ard Scroll down     ^ 1 ^ sxmo_type -M Ctrl -M Shift -k f
+						$icon_a2x Invert          ^ 1 ^ sxmo_type -M Ctrl -M Shift -k x
+						$icon_kbd Hotkeys         ^ 0 ^ sxmo_appmenu.sh sthotkeys
+					"
+					WINNAME=St
+					;;
+				*foot*)
+					CHOICES="
+						$icon_cpy Copy		  ^ 0 ^ sxmo_type -M Shift -M Ctrl c
+						$icon_pst Paste           ^ 0 ^ sxmo_type -M Shift -M Ctrl v
+						$icon_zmi Zoom in         ^ 1 ^ sxmo_type -M Ctrl +
+						$icon_zmo Zoom out        ^ 1 ^ sxmo_type -M Ctrl -k Minus
+						$icon_aru Scroll up       ^ 1 ^ sxmo_type -M Shift -k Prior
+						$icon_ard Scroll down     ^ 1 ^ sxmo_type -M Shift -k Next
+						$icon_lnk URL Mode        ^ 0 ^ sxmo_type -M Shift -M Ctrl -k u
+						$icon_kbd Hotkeys         ^ 0 ^ sxmo_appmenu.sh sthotkeys
+						$icon_fnd Search Field	  ^ 0 ^ sxmo_type -M Ctrl -M Shift -k r
+						$icon_aru Search Back	  ^ 0 ^ sxmo_type -M Ctrl -k r
+						$icon_ard Search Forward  ^ 0 ^ sxmo_type -M Ctrl -k s
+						$icon_itm Search Extend	  ^ 0 ^ sxmo_type -M Ctrl -k w
+					"
+					WINNAME=Foot
+					;;
+				*terminal*|org.gnome.vte.application|Terminal)
+					CHOICES="$icon_kbd Hotkeys ^ 0 ^ sxmo_appmenu.sh sthotkeys"
+					WINNAME=Terminal
+					;;
+				*alacritty*)
+					CHOICES="
+						$icon_cpy Copy				^ 0 ^ sxmo_type -M Shift -M Ctrl c
+						$icon_pst Paste				^ 0 ^ sxmo_type -M Shift -M Ctrl v
+						$icon_vim VI Mode			^ 0 ^ sxmo_type -M Ctrl -M Shift -k Space
+						$icon_fnd Search Forward	^ 0 ^ sxmo_type -M Ctrl -M Shift -k f
+						$icon_fnd Search Backward	^ 0 ^ sxmo_type -M Ctrl -M Shift -k b
+						$icon_aru Search Previous   ^ 0 ^ sxmo_type -k Enter
+						$icon_ard Search Next		^ 0 ^ sxmo_type -M Shift -k Enter
+						$icon_kbd Hotkeys 			^ 0 ^ sxmo_appmenu.sh sthotkeys
+					"
+					WINNAME=Alacritty
+					;;
+			esac
+		esac
+		;;
+	*okular*)
+		# Okular
+		CHOICES="
+			$icon_cfg Touch $(
+				sxmo_wm.sh inputevent touchscreen | grep -q on && \
+				printf %b "$icon_ton ^ 0 ^ sxmo_wm.sh inputevent touchscreen off" || \
+				printf %b "$icon_tof ^ 0 ^ sxmo_wm.sh inputevent touchscreen on"
+			)
+		$icon_cfg Fullscreen    ^ 0 ^ sxmo_type -k Ctrl -k Shift -k F
+		$icon_cfg Menubar       ^ 0 ^ sxmo_type -k Ctrl -k M
+		$icon_cfg Toolbars      ^ 0 ^ sxmo_type -k F7
+		$icon_cfg SXMO Bar      ^ 0 ^ sxmo_wm.sh togglebar
+		"
+		WINNAME=Xournal
+		;;
+	*xournal*)
+		# Xournalpp
+		CHOICES="
+			$icon_cfg Touch $(
+				sxmo_wm.sh inputevent touchscreen | grep -q on && \
+				printf %b "$icon_ton ^ 0 ^ sxmo_wm.sh inputevent touchscreen off" || \
+				printf %b "$icon_tof ^ 0 ^ sxmo_wm.sh inputevent touchscreen on"
+			)
+			$icon_flt Open		^ 0 ^ sxmo_type -k Ctrl -k o
+			$icon_zmi Zoom		^ 1 ^ sxmo_type -k Ctrl -k plus
+			$icon_zmo Zoom		^ 1 ^ sxmo_type -k Ctrl -k minus
+			$icon_zmi Next Page	^ 1 ^ sxmo_type -k Next
+			$icon_zmo Prev Page	^ 1 ^ sxmo_type -k Prior
+			$icon_cfg Menubar       ^ 0 ^ sxmo_type -k F10
+			$icon_cfg Toolbars      ^ 0 ^ sxmo_type -k F9
+			$icon_cfg SXMO Bar      ^ 0 ^ sxmo_wm.sh togglebar
+		"
+		WINNAME=Xournal
+		;;
+	*zathura*)
+		# Zathura
+		CHOICES="
+			$icon_flt Open		^ 0 ^ sxmo_type -k o
+			$icon_zmi Zoom		^ 1 ^ sxmo_type -k plus
+			$icon_zmo Zoom		^ 1 ^ sxmo_type -k minus
+			$icon_arl History	^ 1 ^ sxmo_type -M Ctrl -k o
+			$icon_arr History	^ 1 ^ sxmo_type -M Ctrl -k i
+			$icon_cfg Invert	^ 0 ^ sxmo_type -M Ctrl -k r
+			$icon_flt Index		^ 0 ^ sxmo_type -k Tab
+			$icon_cfg Fit           ^ 0 ^ sxmo_type -k a
+			$icon_cfg Width mode    ^ 0 ^ sxmo_type -k s
+		"
+		WINNAME=Zathura
+		;;
+	*netsurf*)
+		# Netsurf
+		CHOICES="
+			$icon_flt Pipe URL          ^ 0 ^ sxmo_urlhandler.sh
+			$icon_zmi Zoom            ^ 1 ^ sxmo_type -M Ctrl -k plus
+			$icon_zmo Zoom            ^ 1 ^ sxmo_type -M Ctrl -k minus
+			$icon_arl History        ^ 1 ^ sxmo_type -M Alt -k Left
+			$icon_arr History        ^ 1 ^ sxmo_type -M Alt -k Right
+		"
+		WINNAME=Netsurf
+		;;
+	*surf*)
+		# Surf
+		CHOICES="
+			$icon_glb Navigate    ^ 0 ^ sxmo_type -M Ctrl g
+			$icon_lnk Link Menu   ^ 0 ^ sxmo_type -M Ctrl d
+			$icon_flt Pipe URL    ^ 0 ^ sxmo_urlhandler.sh
+			$icon_fnd Search Page ^ 0 ^ sxmo_type -M Ctrl f
+			$icon_fnd Find Next   ^ 0 ^ sxmo_type -M Ctrl n
+			$icon_zmi Zoom      ^ 1 ^ sxmo_type -M Shift -M Ctrl k
+			$icon_zmo Zoom      ^ 1 ^ sxmo_type -M Shift -M Ctrl j
+			$icon_aru Scroll    ^ 1 ^ sxmo_type -M Shift -k Space
+			$icon_ard Scroll    ^ 1 ^ sxmo_type -k Space
+			$icon_itm JS Toggle   ^ 1 ^ sxmo_type -M Shift -M Ctrl s
+			$icon_arl History   ^ 1 ^ sxmo_type -M Ctrl h
+			$icon_arr History   ^ 1 ^ sxmo_type -M Ctrl l
+			$icon_rld Refresh     ^ 0 ^ sxmo_type -M Shift -M Ctrl r
+		"
+		WINNAME=Surf
+		;;
+	*falkon*)
+		# Falkon
+		CHOICES="
+			$icon_flt Pipe URL          ^ 0 ^ sxmo_urlhandler.sh
+			$icon_tab New Tab           ^ 0 ^ sxmo_type -M Ctrl t
+			$icon_win New Window        ^ 0 ^ sxmo_type -M Ctrl n
+			$icon_cls Close Tab         ^ 0 ^ sxmo_type -M Ctrl w
+			$icon_zmi Zoom            ^ 1 ^ sxmo_type -M Ctrl -k plus
+			$icon_zmo Zoom            ^ 1 ^ sxmo_type -M Ctrl -k minus
+			$icon_arl History        ^ 1 ^ sxmo_type -M Alt -k Left
+			$icon_arr History        ^ 1 ^ sxmo_type -M Alt -k Right
+			$icon_win Home           ^ 0 ^ sxmo_type -M Alt -k Home
+			$icon_zmo Full Screen    ^ 0 ^ sxmo_type -k F11
+			$icon_rld Refresh     ^ 0 ^ sxmo_type -M Shift -M Ctrl r
+		"
+		WINNAME=Falkon
+		;;
+	*firefox*|*navigator*)
+		# Firefox
+		CHOICES="
+			$icon_flt Pipe URL          ^ 0 ^ sxmo_urlhandler.sh
+			$icon_tab New Tab           ^ 0 ^ sxmo_type -M Ctrl t
+			$icon_win New Window        ^ 0 ^ sxmo_type -M Ctrl n
+			$icon_cls Close Tab         ^ 0 ^ sxmo_type -M Ctrl w
+			$icon_zmi Zoom            ^ 1 ^ sxmo_type -M Ctrl -k plus
+			$icon_zmo Zoom            ^ 1 ^ sxmo_type -M Ctrl -k minus
+			$icon_arl History        ^ 1 ^ sxmo_type -M Alt -k Left
+			$icon_arr History        ^ 1 ^ sxmo_type -M Alt -k Right
+			$icon_win Home           ^ 0 ^ sxmo_type -M Alt -k Home
+			$icon_zmo Full Screen    ^ 0 ^ sxmo_type -k F11
+			$icon_rld Refresh     ^ 0 ^ sxmo_type -M Shift -M Ctrl r
+		"
+		WINNAME=Firefox
+		;;
+	*krita*)
+		# Krita
+		CHOICES="
+			$icon_fnd Open                   ^ 0 ^ sxmo_type -M Ctrl o
+			$icon_sav Save                   ^ 0 ^ sxmo_type -M Ctrl s
+			$icon_pst Paste                  ^ 0 ^ sxmo_type -M Ctrl v
+			$icon_del Delete                 ^ 0 ^ sxmo_type -k Delete
+			$icon_win Select                 ^ 0 ^ sxmo_type -M Ctrl r
+			$icon_modem_disabled Deselect    ^ 0 ^ sxmo_type -M Ctrl -M Shift a
+			$icon_wn2 Crop                   ^ 0 ^ sxmo_type c
+			$icon_flt Fill                   ^ 0 ^ sxmo_type f
+			$icon_modem_connected Gradient   ^ 0 ^ sxmo_type g
+			$icon_dof HSV Adjust    	     ^ 0 ^ sxmo_type -M Ctrl u
+			$icon_cls Close Image        	 ^ 0 ^ sxmo_type -M Ctrl w
+		"
+		WINNAME=Krita
+		;;
+	*vimb*)
+		CHOICES="
+			$icon_glb Navigate        ^ 0 ^ sxmo_type -k Escape o
+			$icon_zmi Zoom            ^ 1 ^ sxmo_type -k Escape zi
+			$icon_zmo Zoom            ^ 1 ^ sxmo_type -k Escape zo
+			$icon_arl History         ^ 1 ^ sxmo_type -M Ctrl o
+			$icon_arr History         ^ 1 ^ sxmo_type -M Ctrl i
+			$icon_rld Refresh         ^ 0 ^ sxmo_type -k Escape r
+		"
+		WINNAME=Vimb
+		;;
+	*geopard*)
+		# Geopard
+		CHOICES="
+			$icon_flt Pipe URL          ^ 0 ^ sxmo_urlhandler.sh
+			$icon_pls New Tab            ^ 0 ^ sxmo_type -M Ctrl t
+			$icon_cls Close Tab          ^ 0 ^ sxmo_type -M Ctrl w
+			$icon_bok Open Bookmarks     ^ 0 ^ sxmo_type -M Ctrl b
+			$icon_pls Add Bookmark       ^ 0 ^ sxmo_type -M Ctrl d
+			$icon_edt Edit Bookmarks     ^ 0 ^ sxmo_terminal.sh $EDITOR ~/.local/share/geopard/bookmarks.gemini
+			$icon_zmi Increase Font Size ^ 1 ^ sxmo_type -M Ctrl -k plus
+			$icon_zmo Decrease Font Size ^ 1 ^ sxmo_type -M Ctrl -k minus
+			$icon_arl History Back       ^ 1 ^ sxmo_type -M Alt -k Left
+			$icon_arr History Forward    ^ 1 ^ sxmo_type -M Alt -k Right
+			$icon_fnd URL Bar            ^ 0 ^ sxmo_type -k F6
+			$icon_rld Refresh            ^ 0 ^ sxmo_type -k F6 -k Return
+			"
+		WINNAME=Geopard
+		;;
+	*lagrange*)
+		# Lagrange
+		CHOICES="
+			$icon_mnu Toggle sidebar ^ 0 ^ sxmo_type -M Shift -M Ctrl p
+			$icon_bok Open bookmarks ^ 0 ^ sxmo_type -M Ctrl l && sxmo_type 'about:bookmarks' -k Return
+			$icon_pls Add bookmark   ^ 0 ^ sxmo_type -M Ctrl d
+			$icon_zmi Zoom           ^ 1 ^ sxmo_type -M Ctrl -k equal
+			$icon_zmo Zoom           ^ 1 ^ sxmo_type -M Ctrl -k minus
+			$icon_aru Parent dir     ^ 1 ^ sxmo_type -M Alt -k Up
+			$icon_arl History        ^ 1 ^ sxmo_type -M Alt -k Left
+			$icon_arr History        ^ 1 ^ sxmo_type -M Alt -k Right
+			$icon_rld Refresh        ^ 0 ^ sxmo_type -M Ctrl r
+		"
+		WINNAME=Lagrange
+		;;
+	org.gnome.maps)
+	CHOICES="
+		$icon_gps Toggle Geoclue ^ 0 ^ superctl status geoclue-agent |grep started >/dev/null && superctl stop geoclue-agent || superctl start geoclue-agent
+		$icon_zmi Zoom in ^ 1 ^ sxmo_type -M ctrl =
+		$icon_zmo Zoom out ^ 1 ^ sxmo_type -M ctrl -k minus
+		$icon_fnd Explore POI ^ 0 ^ sxmo_type -M ctrl -M Shift F
+		$icon_fnd Search ^ 0 ^ sxmo_type -M ctrl f
+		$icon_lst Show last results ^ 0 ^ sxmo_type -M ctrl r
+		$icon_map Toggle route planner ^ 0 ^ sxmo_type -M ctrl d
+		$icon_gps Show current location ^ 0 ^ sxmo_type -M ctrl l
+		"
+		WINNAME=Maps
+		;;
+	*mepo*)
+		# Mepo
+		# The choices / hotkeys for the contextmenu are generated through mepo's
+		# own scripting to be in congruence since the same menu can be launched
+		# via mepo's UI as well, this compatibility is available as of mepo 0.4
+		CHOICES="$(mepo_ui_central_menu.sh menuoptions | awk -F^ '{ print $1 "^ 0 ^ sxmo_type" $3  }')"
+		WINNAME=Mepo
+		;;
+	*foxtrot*)
+		# Foxtrot GPS
+		CHOICES="
+			$icon_zmi Zoom              ^ 1 ^ sxmo_type i
+			$icon_zmo Zoom              ^ 1 ^ sxmo_type o
+			$icon_itm Panel Toggle        ^ 1 ^ sxmo_type m
+			$icon_itm GPSD Toggle         ^ 1 ^ sxmo_type a
+		"
+		WINNAME=Maps
+		;;
+	*badwolf*)
+		# Badwolf Browser
+		CHOICES="
+			$icon_tab New Tab           ^ 0 ^ sxmo_type -M Ctrl -k t
+			$icon_cls Close Tab         ^ 0 ^ sxmo_type -M Alt -k d
+			$icon_fnd Reset Zoom     ^ 0 ^ sxmo_type -M Ctrl -k 0
+			$icon_arr History        ^ 1 ^ sxmo_type -M Ctrl ]
+			$icon_arl History        ^ 1 ^ sxmo_type -M Ctrl [
+			$icon_arr Next Tab          ^ 1 ^ sxmo_type -M Alt -k Right
+			$icon_arl Previous Tab      ^ 1 ^ sxmo_type -M Alt -k Left
+			$icon_rld Refresh     ^ 0 ^ sxmo_type -M Shift -M Ctrl -k r
+			$icon_fnd Search     ^ 0 ^ sxmo_type -M Shift -M Ctrl -k f
+			$icon_arr Next (Search)     ^ 0 ^ sxmo_type -M Shift -M Ctrl -k g
+			$icon_arl Previous (Search)     ^ 0 ^ sxmo_type -M Shift -M Ctrl -M Shift -k g
+			$icon_flt URL Bar     ^ 0 ^ sxmo_type -M Shift -M Ctrl l
+			$icon_fnd Open Web Inspector      ^ 0 ^ sxmo_type -k F12
+		"
+		WINNAME=Badwolf
+		;;
+	*acme*)
+		# Acme
+		CHOICES="
+			$icon_mse 2 (Right) [2s delay]  ^ 0 ^ sleep 2 && xdotool click 3
+			$icon_mse 3 (Middle) [2s delay]  ^ 0 ^ sleep 2 && xdotool click 2
+			$icon_itm Autocomplete            ^ 0 ^ sxmo_type.sh -M Ctrl -k f
+			$icon_exp Select Last Typed Text  ^ 0 ^ sxmo_type.sh -M Escape
+			$icon_del Delete To Start Of Line       ^ 0 ^ sxmo_type.sh -M Ctrl -k U
+			$icon_arl Move To Start Of Line   ^ 0 ^ sxmo_type.sh -M Ctrl -k A
+			$icon_arr Move To End Of Line      ^ 0 ^ sxmo_type.sh -M Ctrl -k E
+		"
+		WINNAME=Acme
+		;;
+	*mupdf*)
+		# Mupdf
+		CHOICES="
+			$icon_nxt Next Page           ^ 0 ^ sxmo_type -k Space
+			$icon_prv Previous Page         ^ 0 ^ sxmo_type -k b
+			$icon_chk Mark Page		^ 0 ^ sxmo_type -k m
+			$icon_ret Pop To Last Mark        ^ 0 ^ sxmo_type -k t
+			$icon_zmi Zoom In        ^ 1 ^ sxmo_type -k +
+			$icon_zmo Zoom Out          ^ 1 ^ sxmo_type -k -
+			$icon_fnd Fit Width      ^ 0 ^ sxmo_type -k W
+			$icon_fnd Fit Height     ^ 0 ^ sxmo_type -k H
+			$icon_fnd Zoom To Fit     ^ 0 ^ sxmo_type -k Z
+			$icon_fnd Reset Zoom     ^ 0 ^ sxmo_type -k z
+			$icon_rol Rotate Counterclockwise     ^ 0 ^ sxmo_type -k [
+			$icon_ror Rotate Clockwise     ^ 0 ^ sxmo_type -k ]
+			$icon_fnd Search     ^ 0 ^ sxmo_type -k /
+		"
+		WINNAME=Mupdf
+		;;
+	*tabbed*)
+		# Tabbed
+		CHOICES="
+			$icon_tab New Tab            ^ 0 ^ sxmo_type.sh -M Ctrl -M Shift -M Enter
+			$icon_arl Previous Tab       ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k h
+			$icon_arr Next Tab           ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k l
+			$icon_arl Move Tab Left      ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k j
+			$icon_arr Move Tab Right     ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k k
+			$icon_mnu Menu Prompt        ^ 0 ^ sxmo_type.sh -M Ctrl -k U0060
+			$icon_cls Close Tab          ^ 0 ^ sxmo_type.sh -M Ctrl -k q
+		"
+		WINNAME=Tabbed
+		;;
+esac
+
+if ! test "$c"; then
+printf "%b\n" "$WINNAME"
+c="$(printf "%b\n" "$CHOICES" |grep sxmo_type|sed "s/sxmo_type[^ ]* \(\S\)$/'\1'/g"|
+sed "s/sxmo_type[^ ]* -k \(\S\+\)$/'\1'/g"|
+sed "s/sxmo_type[^ ]* -M Ctrl \(\S\)$/'<ctrl>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Ctrl -k \(\S\+\)$/'<ctrl>\1'/ig"|
+sed "s/sxmo_type[^ ]* -k Ctrl -k \(\S\+\)$/'<ctrl>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Ctrl \(\S\) -m Ctrl$/'<ctrl>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Ctrl -k \(\S\+\) -m Ctrl$/'<ctrl>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Shift \(\S\)$/'<shift>\1'/g"|
+sed "s/sxmo_type[^ ]* -M Shift -k \(\S\+\)$/'<shift>\1'/g"|
+sed "s/sxmo_type[^ ]* -M Shift -M Ctrl \(\S\)$/'<ctrl><shift>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Shift -M Ctrl -k \(\S\+\)$/'<ctrl><shift>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Ctrl -M Shift \(\S\)$/'<ctrl><shift>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Ctrl -M Shift -k \(\S\+\)$/'<ctrl><shift>\1'/ig"|
+sed "s/sxmo_type[^ ]* -k Ctrl -k Shift -k \(\S\+\)$/'<ctrl><shift>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Shift -M Ctrl -M Shift -k g/<ctrl><shift>g/g"|
+sed "s/sxmo_type[^ ]* -M Ctrl -M Shift -M \(Enter\)$/'<ctrl><shift>\1'/ig"|
+sed "s/sxmo_type[^ ]* -M Alt \(\S\)$/'<alt>\1'/g"|
+sed "s/sxmo_type[^ ]* -M Alt -k \(\S\+\)$/'<alt>\1'/g"|
+sed "s/sxmo_type[^ ]* -M Alt \(\S\) -m Alt$/'<alt>\1'/g"|
+sed "s/sxmo_type[^ ]* -M Alt -k \(\S\+\) -m Alt$/'<alt>\1'/g" |grep -v sxmo_type | grep -o "'[^']\+'$"|tr "\n" ,|sed 's/,$//g')"
+fi
+echo "$c"
+
+test "$c" &&
+gsettings set sm.puri.phosh.osk.Terminal shortcuts "[$c]"
+}
+
+if test "$1" = "--watch"; then
+	socat -U - UNIX-CONNECT:"$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" |grep 'activewindow>>' | while read -r line; do setComms; done
+else
+	setComms "$@"
+fi