proof of concept for stevia (phosh-osk-stub) auto-changing shortcuts application-specifically
Diffstat (limited to 'pos-dyntercomms.sh')
| -rwxr-xr-x | pos-dyntercomms.sh | 672 |
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 |