aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/hyprland/.local/bin/layout-cycle
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-03-07 14:03:02 -0600
committerCraig Jennings <c@cjennings.net>2026-03-07 14:03:02 -0600
commitc6ba9f7ae6d6868ad09d8674890161fcf90092e0 (patch)
tree0fb64b0a88969cc0767e3c7be7143e6a8a363200 /dotfiles/hyprland/.local/bin/layout-cycle
parent2c2670a2b62295990e115420cc3e4ddcb3d0042c (diff)
downloadarchsetup-c6ba9f7ae6d6868ad09d8674890161fcf90092e0.tar.gz
archsetup-c6ba9f7ae6d6868ad09d8674890161fcf90092e0.zip
feat(hyprland): remove plugins, add layout cycling
Hyprland 0.54 brings scrolling and monocle layouts into core, making hyprpm plugins unnecessary. Remove hyprland-plugins-setup, focus-restore, hyprpm pacman hook, and allfloat keybinding. Add layout-cycle script and $mod+Shift+Arrow keybindings to cycle master/scrolling/monocle. Move cpio to System Utilities section.
Diffstat (limited to 'dotfiles/hyprland/.local/bin/layout-cycle')
-rwxr-xr-xdotfiles/hyprland/.local/bin/layout-cycle35
1 files changed, 35 insertions, 0 deletions
diff --git a/dotfiles/hyprland/.local/bin/layout-cycle b/dotfiles/hyprland/.local/bin/layout-cycle
new file mode 100755
index 0000000..dcc7b6b
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/layout-cycle
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Cycle Hyprland layout forward (next) or backward (prev)
+# Usage: layout-cycle next | layout-cycle prev
+
+LAYOUTS="master scrolling monocle"
+CURRENT=$(hyprctl getoption general:layout -j | jq -r '.str')
+DIR="${1:-next}"
+
+set -- $LAYOUTS
+COUNT=$#
+INDEX=0
+
+i=0
+for layout in $LAYOUTS; do
+ if [ "$layout" = "$CURRENT" ]; then
+ INDEX=$i
+ break
+ fi
+ i=$((i + 1))
+done
+
+if [ "$DIR" = "next" ]; then
+ INDEX=$(( (INDEX + 1) % COUNT ))
+else
+ INDEX=$(( (INDEX - 1 + COUNT) % COUNT ))
+fi
+
+i=0
+for layout in $LAYOUTS; do
+ if [ $i -eq $INDEX ]; then
+ hyprctl keyword general:layout "$layout"
+ break
+ fi
+ i=$((i + 1))
+done