#!/bin/sh # Layout-aware navigation for Hyprland # Usage: layout-navigate [move] # direction: next|prev # move: if present, move window instead of focus DIR="$1" MOVE="$2" LAYOUT=$(hyprctl getoption general:layout -j | jq -r '.str') case "$LAYOUT" in scrolling) # Swap directions: J (next) goes left, K (prev) goes right if [ "$MOVE" = "move" ]; then if [ "$DIR" = "next" ]; then hyprctl dispatch layoutmsg movewindowto l else hyprctl dispatch layoutmsg movewindowto r fi else if [ "$DIR" = "next" ]; then hyprctl dispatch layoutmsg focus l else hyprctl dispatch layoutmsg focus r fi fi ;; hy3) if [ "$MOVE" = "move" ]; then if [ "$DIR" = "next" ]; then hyprctl dispatch hy3:movewindow r else hyprctl dispatch hy3:movewindow l fi else if [ "$DIR" = "next" ]; then hyprctl dispatch hy3:movefocus r else hyprctl dispatch hy3:movefocus l fi fi ;; *) # master, dwindle, etc. if [ "$MOVE" = "move" ]; then if [ "$DIR" = "next" ]; then hyprctl dispatch layoutmsg swapnext else hyprctl dispatch layoutmsg swapprev fi else if [ "$DIR" = "next" ]; then hyprctl dispatch layoutmsg cyclenext else hyprctl dispatch layoutmsg cycleprev fi fi ;; esac