diff options
Diffstat (limited to 'bspc/bspcDirectionFocus.sh')
-rwxr-xr-x | bspc/bspcDirectionFocus.sh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/bspc/bspcDirectionFocus.sh b/bspc/bspcDirectionFocus.sh new file mode 100755 index 0000000..5222298 --- /dev/null +++ b/bspc/bspcDirectionFocus.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# bspcDirectionFocus.sh: Directionally select node with same floating state +# +# Usage: bspcDirectionFocus.sh DIRECTION + +usageMessage="Usage: bspcDirectionFocus.sh DIRECTION" + +direction="$1" + +if ! echo "$direction" | grep -Eq '(west)|(south)|(north)|(east)'; then + echo "$usageMessage" 1>&2 + exit 1 +fi + +status="$(bspc wm --get-status)" + +# If floating (TF) select floating in direction. +# Else if monocle (LM) and west or east select previous or next local window in direction. +# Else select non-floating in direction. +if echo "$status" | grep -q ':TF:'; then + bspc node --focus "$direction".floating; +elif echo "$status" | grep -q ':LM:'; then + if [ "$direction" = "west" ]; then + bspc node --focus prev.local.window.!floating + elif [ "$direction" = "east" ]; then + bspc node --focus next.local.window.!floating + fi +else + bspc node --focus "$direction".!floating +fi |