From 791b34e7e46bdbffd1a39cc7afc7f5a8d0f50cf2 Mon Sep 17 00:00:00 2001 From: Hannes Date: Sun, 5 Jul 2026 18:24:49 +0200 Subject: [PATCH] added cycling of workspaces for honney-main --- config/bind.lua | 17 ++++++++++--- scripts/cycle_workspace.sh | 51 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 3 deletions(-) create mode 100755 scripts/cycle_workspace.sh diff --git a/config/bind.lua b/config/bind.lua index 13fe64c..e5f2e3a 100644 --- a/config/bind.lua +++ b/config/bind.lua @@ -23,9 +23,11 @@ hl.bind("SUPER+L", hl.dsp.exec_cmd(lockscreen), { locked = true }) -- Interacting with Workspaces for i = 1, 9 do - hl.bind("SUPER+" .. tostring(i), hl.dsp.focus({ workspace = tostring(i) })) - hl.bind("SUPER+CTRL+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = false})) - hl.bind("SUPER+SHIFT+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = true})) + if not (HOSTNAME == "honney-main" and i >= 1 and i <= 4) then + hl.bind("SUPER+" .. tostring(i), hl.dsp.focus({ workspace = tostring(i) })) + hl.bind("SUPER+CTRL+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = false})) + hl.bind("SUPER+SHIFT+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = true})) + end end hl.bind("SUPER+0", hl.dsp.focus({ workspace = "10" })) @@ -102,6 +104,15 @@ if HOSTNAME == "honney-main" then hl.bind("ALT+Y", hl.dsp.exec_cmd("~/.config/hypr/scripts/writing/tmdb.sh")) end +if HOSTNAME == "honney-main" then + local script = "~/.config/hypr/scripts/cycle_workspace.sh" + for i = 1, 4 do + hl.bind("SUPER+" .. i, hl.dsp.exec_cmd(script .. " " .. i .. " focus")) + hl.bind("SUPER+CTRL+" .. i, hl.dsp.exec_cmd(script .. " " .. i .. " move")) + hl.bind("SUPER+SHIFT+" .. i, hl.dsp.exec_cmd(script .. " " .. i .. " move_follow")) + end +end + -- Quickshell hl.bind("SUPER + SHIFT + W", hl.dsp.global("quickshell:Wallpaper")) hl.bind("SUPER + SHIFT + J", hl.dsp.global("quickshell:JLearner")) diff --git a/scripts/cycle_workspace.sh b/scripts/cycle_workspace.sh new file mode 100755 index 0000000..7563424 --- /dev/null +++ b/scripts/cycle_workspace.sh @@ -0,0 +1,51 @@ +#!/bin/bash +BASE=$1 +ACTION=$2 + +case $BASE in + 1) GROUP="1 10 11 12" ;; + 2) GROUP="2 20 21 22" ;; + 3) GROUP="3 30 31 32" ;; + 4) GROUP="4 40 41 42" ;; + *) exit 1 ;; +esac + +CURRENT=$(hyprctl activeworkspace -j 2>/dev/null | jq '.id') + +NEXT="" +FOUND=0 +for WS in $GROUP; do + if [ "$FOUND" = "1" ]; then + NEXT=$WS + break + fi + [ "$WS" = "$CURRENT" ] && FOUND=1 +done +if [ -z "$NEXT" ] && [ "$FOUND" = "1" ]; then + NEXT=$(echo "$GROUP" | awk '{print $1}') +fi + +if [ -z "$NEXT" ]; then + for WS in $GROUP; do + [ "$WS" = "$BASE" ] && continue + for MWS in $(hyprctl monitors -j 2>/dev/null | jq '.[].activeWorkspace.id'); do + if [ "$WS" = "$MWS" ]; then + NEXT=$WS + break 2 + fi + done + done + [ -z "$NEXT" ] && NEXT=$BASE +fi + +case $ACTION in + focus) + hyprctl dispatch "hl.dsp.focus({ workspace = \"$NEXT\" })" + ;; + move) + hyprctl dispatch "hl.dsp.window.move({ workspace = \"$NEXT\", follow = false })" + ;; + move_follow) + hyprctl dispatch "hl.dsp.window.move({ workspace = \"$NEXT\", follow = true })" + ;; +esac \ No newline at end of file