#!/usr/bin/env sh # This script handles input actions, it is called by lisgd for gestures # and by dwm for button presses ACTION="$1" # include common definitions # shellcheck source=scripts/core/sxmo_common.sh . "$(dirname "$0")/sxmo_common.sh" lock_screen() { if [ "$SXMO_LOCK_SCREEN_OFF" = "1" ]; then sxmo_screenlock.sh off else sxmo_screenlock.sh lock fi if [ "$SXMO_LOCK_SUSPEND" = "1" ]; then sxmo_screenlock.sh crust fi } XPROPOUT="$(sxmo_wm.sh focusedwindow)" WMCLASS="$(printf %s "$XPROPOUT" | grep app: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')" WMNAME="$(printf %s "$XPROPOUT" | grep title: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')" if [ -x "$XDG_CONFIG_HOME"/sxmo/hooks/inputhandler ]; then #hook script must exit with a zero exit code ONLY if it has handled the gesture! "$XDG_CONFIG_HOME"/sxmo/hooks/inputhandler "$WMCLASS" "$WMNAME" "$@" && exit fi if [ "$(sxmo_screenlock.sh getCurState)" != "unlock" ]; then case "$ACTION" in "volup_three") sxmo_screenlock.sh crust ;; "voldown_three") if [ "$(sxmo_screenlock.sh getCurState)" = "lock" ]; then sxmo_screenlock.sh off else lock_screen fi ;; "powerbutton_three") sxmo_screenlock.sh unlock ;; esac exit fi if sxmo_dmenu.sh isopen; then case "$ACTION" in "volup_one") sxmo_type.sh -k Up exit ;; "voldown_one") sxmo_type.sh -k Down exit ;; "powerbutton_one") sxmo_type.sh -k Return exit ;; esac fi #special context-sensitive handling case "$WMCLASS" in *"foot"*) # First we try to handle the app running inside st: case "$WMNAME" in *"tuir"*) if [ "$ACTION" = "rightbottomedge" ]; then sxmo_type.sh o exit 0 elif [ "$ACTION" = "leftbottomedge" ]; then sxmo_type.sh s exit 0 fi ;; *"less"*) case "$ACTION" in "leftbottomedge") sxmo_type.sh q exit 0 ;; "leftrightedge_short") sxmo_type.sh q exit 0 ;; *"onedown") sxmo_type.sh u exit 0 ;; *"oneup") sxmo_type.sh d exit 0 ;; *"oneleft") sxmo_type.sh ":n" -k Return exit 0 ;; *"oneright") sxmo_type.sh ":p" -k Return exit 0 ;; esac ;; *"amfora"*) case "$ACTION" in "downright") sxmo_type.sh -k Tab exit 0 ;; "upleft") sxmo_type.sh -M Shift -k Tab exit 0 ;; *"onedown") sxmo_type.sh u exit 0 ;; *"oneup") sxmo_type.sh d exit 0 ;; *"oneright") sxmo_type.sh -k Return exit 0 ;; "upright") sxmo_type.sh -M Ctrl t exit 0 ;; *"oneleft") sxmo_type.sh b exit 0 ;; "downleft") sxmo_type.sh -M Ctrl w exit 0 ;; esac ;; esac # Now we try generic st actions case "$ACTION" in *"onedown") sxmo_type.sh -M Shift -k Page_Up exit 0 ;; *"oneup") sxmo_type.sh -M Shift -k Page_Down exit 0 ;; esac esac #standard handling case "$ACTION" in "powerbutton_one") if echo "$WMCLASS" | grep -i "megapixels"; then sxmo_type.sh -k space else sxmo_keyboard.sh toggle fi exit 0 ;; "powerbutton_two") sxmo_blinkled.sh blue; $TERMCMD "$SHELL" exit 0 ;; "powerbutton_three") sxmo_blinkled.sh blue; $BROWSER exit 0 ;; "voldown_one") sxmo_wm.sh togglelayout exit ;; "voldown_two") sxmo_wm.sh switchfocus exit ;; "voldown_three") sxmo_killwindow.sh exit ;; "volup_one") sxmo_appmenu.sh exit ;; "volup_two") sxmo_appmenu.sh sys exit ;; "volup_three") lock_screen exit ;; "rightleftedge") sxmo_workspace.sh previous exit 0 ;; "leftrightedge") sxmo_workspace.sh next exit 0 ;; "twoleft") sxmo_workspace.sh move-previous exit 0 ;; "tworight") sxmo_workspace.sh move-next exit 0 ;; "righttopedge") sxmo_brightness.sh up & exit 0 ;; "lefttopedge") sxmo_brightness.sh down & exit 0 ;; "upleftedge") sxmo_vol.sh up & exit 0 ;; "downleftedge") sxmo_vol.sh down & exit 0 ;; "upbottomedge") sxmo_keyboard.sh open exit 0 ;; "downbottomedge") sxmo_keyboard.sh close exit 0 ;; "downtopedge") sxmo_dmenu.sh isopen || sxmo_appmenu.sh & exit 0 ;; "twodowntopedge") sxmo_dmenu.sh isopen || sxmo_appmenu.sh sys & exit 0 ;; "uptopedge") sxmo_dmenu.sh close dunstctl close-all exit 0 ;; "twodownbottomedge") sxmo_killwindow.sh exit 0 ;; "uprightedge") sxmo_type.sh -k Up exit 0 ;; "downrightedge") sxmo_type.sh -k Down exit 0 ;; "leftrightedge_short") sxmo_type.sh -k Left exit 0 ;; "rightrightedge_short") sxmo_type.sh -k Right exit 0 ;; "rightbottomedge") sxmo_type.sh -k Return exit 0 ;; "leftbottomedge") sxmo_type.sh -k BackSpace exit 0 ;; "topleftcorner") sxmo_appmenu.sh sys & exit 0 ;; "toprightcorner") sxmo_appmenu.sh scripts & exit 0 ;; "bottomleftcorner") sxmo_dmenu.sh close lock_screen exit 0 ;; "bottomrightcorner") sxmo_rotate.sh & exit 0 ;; esac