aboutsummaryrefslogtreecommitdiff
path: root/bspc
diff options
context:
space:
mode:
Diffstat (limited to 'bspc')
-rwxr-xr-xbspc/bspcDirectionFocus.sh19
1 files changed, 14 insertions, 5 deletions
diff --git a/bspc/bspcDirectionFocus.sh b/bspc/bspcDirectionFocus.sh
index f36359b..2e76527 100755
--- a/bspc/bspcDirectionFocus.sh
+++ b/bspc/bspcDirectionFocus.sh
@@ -17,16 +17,25 @@ nodeStatus="$(bspc query -T -n)"
desktopStatus="$(bspc query -T -d)"
# If selected window is floating select floating in direction.
-# Else if layout is monocle and west or east select previous or next local window in direction.
-# Else select non-floating in direction.
+
if echo "$nodeStatus" | grep -q '"state":"floating'; then
bspc node --focus "$direction".floating
-elif echo "$desktopStatus" | grep -q '"layout":"monocle"'; then
- if [ "$direction" = "west" ]; then
+
+# Else if layout is monocle and north or south select previous or next local
+# window in direction. North and south are chosen over west and east so they
+# don't conflict when wanting to select a window in a different screen from a
+# monocle layout screen.
+
+elif echo "$desktopStatus" | grep -q '"layout":"monocle"' &&
+ echo "$direction" | grep -Eq '(north)|(south)'; then
+ if [ "$direction" = "north" ]; then
bspc node --focus prev.local.window.!floating
- elif [ "$direction" = "east" ]; then
+ elif [ "$direction" = "south" ]; then
bspc node --focus next.local.window.!floating
fi
+
+# Else select non-floating in direction.
+
else
bspc node --focus "$direction".!floating
fi