You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
2.5 KiB
133 lines
2.5 KiB
#!/usr/bin/env sh |
|
|
|
ACTION="$1" |
|
|
|
# include common definitions |
|
# shellcheck source=scripts/core/sxmo_common.sh |
|
. "$(dirname "$0")/sxmo_common.sh" |
|
|
|
XPROPOUT="$(xprop -id "$(xdotool getactivewindow)")" |
|
WMCLASS="$(echo "$XPROPOUT" | grep WM_CLASS | cut -d ' ' -f3- | cut -d ' ' -f1 | tr -d '\",')" |
|
|
|
HANDLE=1 |
|
if [ -x "$XDG_CONFIG_HOME"/sxmo/hooks/gesture ]; then |
|
#hook script must exit with a zero exit code ONLY if it has handled the gesture! |
|
"$XDG_CONFIG_HOME"/sxmo/hooks/gesture "$WMCLASS" "$@" |
|
HANDLE=$? |
|
fi |
|
|
|
if [ "$HANDLE" -ne 0 ]; then |
|
#special context-sensitive handling |
|
case "$WMCLASS" in |
|
"foxtrotgps") |
|
# E.g. just a check to ignore 1-finger gestures in foxtrotgps |
|
if [ "$ACTION" != "killwindow" ]; then |
|
HANDLE=0 |
|
fi |
|
;; |
|
"st-256color") |
|
# First we try to handle the app running inside st: |
|
WMNAME=$(echo "$XPROPOUT" | grep -E "^WM_NAME" | cut -d ' ' -f3-) |
|
if echo "$WMNAME" | grep -i -w tuir; then |
|
if [ "$ACTION" = "enter" ]; then |
|
xdotool key o |
|
HANDLE=0 |
|
elif [ "$ACTION" = "back" ]; then |
|
xdotool key s |
|
HANDLE=0 |
|
fi |
|
fi |
|
;; |
|
esac |
|
fi |
|
|
|
if [ "$HANDLE" -ne 0 ]; then |
|
#standard handling |
|
case "$ACTION" in |
|
"prevdesktop") |
|
xdotool key --clearmodifiers Alt+Shift+e |
|
;; |
|
"nextdesktop") |
|
xdotool key --clearmodifiers Alt+Shift+r |
|
;; |
|
"moveprevdesktop") |
|
xdotool key --clearmodifiers Alt+e |
|
;; |
|
"movenextdesktop") |
|
xdotool key --clearmodifiers Alt+r |
|
;; |
|
"unmute") |
|
sxmo_vol.sh unmute & |
|
;; |
|
"mute") |
|
sxmo_vol.sh mute & |
|
;; |
|
"brightnessup") |
|
sxmo_brightness.sh up & |
|
;; |
|
"brightnessdown") |
|
sxmo_brightness.sh down & |
|
;; |
|
"volup") |
|
sxmo_vol.sh up & |
|
;; |
|
"voldown") |
|
sxmo_vol.sh down & |
|
;; |
|
"showkeyboard") |
|
sxmo_keyboard.sh open |
|
;; |
|
"hidekeyboard") |
|
sxmo_keyboard.sh close |
|
;; |
|
"showmenu") |
|
pidof dmenu || setsid -f sxmo_appmenu.sh & |
|
;; |
|
"showsysmenu") |
|
pidof dmenu || setsid -f sxmo_appmenu.sh sys & |
|
;; |
|
"hidemenu") |
|
pkill -9 dmenu |
|
;; |
|
"closewindow") |
|
sxmo_killwindow.sh close |
|
;; |
|
"killwindow") |
|
sxmo_killwindow.sh |
|
;; |
|
"scrollup_long") |
|
xdotool key Prior |
|
;; |
|
"scrolldown_long") |
|
xdotool key Next |
|
;; |
|
"scrollup_med") |
|
xdotool key Up Up Up |
|
;; |
|
"scrolldown_med") |
|
xdotool key Down Down Down |
|
;; |
|
"scrollup_short") |
|
xdotool key Up |
|
;; |
|
"scrolldown_short") |
|
xdotool key Down |
|
;; |
|
"scrollleft_short") |
|
xdotool key Left |
|
;; |
|
"scrollright_short") |
|
xdotool key Right |
|
;; |
|
"enter") |
|
xdotool key Return |
|
;; |
|
"back") |
|
xdotool key BackSpace |
|
;; |
|
*) |
|
#fallback, just execute the command |
|
"$@" |
|
;; |
|
esac |
|
fi
|
|
|