Under the Lua config manager, hyprctl dispatch evaluates its argument as
hl.dispatch(...), so the pre-0.55 form errors out:
$ hyprctl dispatch workspace 4
error: [string "return hl.dispatch(workspace 4)"]:1: ')' expected near '4'
Most of the dotfiles are already migrated. Four scripts still use the old form.
The one users will notice is logout: power.sh exit fails silently, because the
script does not check the return value.
Why this is easy to miss: hyprctl prints ok for dispatches that do
nothing. These have to be checked by observed effect, not exit code. Worth
knowing for anyone auditing the rest.
Affected
| File |
Effect |
hypr/scripts/power.sh |
Logout does nothing |
hypr/scripts/moveTo.sh |
Move all windows to workspace |
hypr/scripts/toggle-animations.sh |
Animation toggle |
ml4w/scripts/ml4w-toggle-allfloat |
Float all windows |
Two that need more than a syntax swap
hl.window.move and hl.window.float have no window-targeting argument. Their
argument sets are direction, x+y(+relative), workspace, into_group, out_of_group and action respectively, and they act on the focused window.
Passing window= is accepted without error but does not target. So the patch
focuses the target first, then acts.
Also noticed
hypr/scripts/toggleallfloat.sh is no longer referenced by anything. The
SUPER+SHIFT+T bind calls ml4w-toggle-allfloat. It still contains
hyprctl dispatch workspaceopt allfloat, which cannot work
(hl.dsp.workspaceopt does not exist). Looks like a leftover from the #1495
fix. Might be worth deleting rather than patching.
Tested on
Hyprland 0.56.1, ML4W 2.14.1. Each replacement verified by observed effect in a
nested Hyprland instance: session actually exited, active workspace actually
changed, only the intended window floated or moved.
Patch
diff --git a/dotfiles/.config/hypr/scripts/moveTo.sh b/dotfiles/.config/hypr/scripts/moveTo.sh
--- a/dotfiles/.config/hypr/scripts/moveTo.sh
+++ b/dotfiles/.config/hypr/scripts/moveTo.sh
@@ -36,12 +36,13 @@
for address in $window_addresses; do
log_message "Moving window $address to workspace $target_workspace"
- hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address"
+ hyprctl dispatch "hl.dsp.focus({window = 'address:$address'})"
+ hyprctl dispatch "hl.dsp.window.move({workspace = '$target_workspace'})"
done
# Switch to the target workspace
-hyprctl dispatch workspace "$target_workspace"
+hyprctl dispatch "hl.dsp.focus({workspace = '$target_workspace'})"
diff --git a/dotfiles/.config/hypr/scripts/power.sh b/dotfiles/.config/hypr/scripts/power.sh
--- a/dotfiles/.config/hypr/scripts/power.sh
+++ b/dotfiles/.config/hypr/scripts/power.sh
@@ -41,7 +41,7 @@
terminate_clients
sleep 0.5
- hyprctl dispatch exit
+ hyprctl dispatch "hl.dsp.exit()"
sleep 2
diff --git a/dotfiles/.config/hypr/scripts/toggle-animations.sh b/dotfiles/.config/hypr/scripts/toggle-animations.sh
--- a/dotfiles/.config/hypr/scripts/toggle-animations.sh
+++ b/dotfiles/.config/hypr/scripts/toggle-animations.sh
@@ -4,10 +4,10 @@
if [ -f $cache_file ]; then
- hyprctl keyword animations:enabled true
+ hyprctl eval "hl.config({animations={enabled=true}})"
rm $cache_file
else
- hyprctl keyword animations:enabled false
+ hyprctl eval "hl.config({animations={enabled=false}})"
touch $cache_file
diff --git a/dotfiles/.config/ml4w/scripts/ml4w-toggle-allfloat b/dotfiles/.config/ml4w/scripts/ml4w-toggle-allfloat
--- a/dotfiles/.config/ml4w/scripts/ml4w-toggle-allfloat
+++ b/dotfiles/.config/ml4w/scripts/ml4w-toggle-allfloat
@@ -4,5 +4,6 @@
for addr in "${addresses[@]}"; do
- hyprctl dispatch togglefloating "address:$addr"
+ hyprctl dispatch "hl.dsp.focus({window = 'address:$addr'})"
+ hyprctl dispatch "hl.dsp.window.float({action = 'toggle'})"
done
Under the Lua config manager,
hyprctl dispatchevaluates its argument ashl.dispatch(...), so the pre-0.55 form errors out:Most of the dotfiles are already migrated. Four scripts still use the old form.
The one users will notice is logout:
power.sh exitfails silently, because thescript does not check the return value.
Why this is easy to miss:
hyprctlprintsokfor dispatches that donothing. These have to be checked by observed effect, not exit code. Worth
knowing for anyone auditing the rest.
Affected
hypr/scripts/power.shhypr/scripts/moveTo.shhypr/scripts/toggle-animations.shml4w/scripts/ml4w-toggle-allfloatTwo that need more than a syntax swap
hl.window.moveandhl.window.floathave no window-targeting argument. Theirargument sets are
direction, x+y(+relative), workspace, into_group, out_of_groupandactionrespectively, and they act on the focused window.Passing
window=is accepted without error but does not target. So the patchfocuses the target first, then acts.
Also noticed
hypr/scripts/toggleallfloat.shis no longer referenced by anything. TheSUPER+SHIFT+Tbind callsml4w-toggle-allfloat. It still containshyprctl dispatch workspaceopt allfloat, which cannot work(
hl.dsp.workspaceoptdoes not exist). Looks like a leftover from the #1495fix. Might be worth deleting rather than patching.
Tested on
Hyprland 0.56.1, ML4W 2.14.1. Each replacement verified by observed effect in a
nested Hyprland instance: session actually exited, active workspace actually
changed, only the intended window floated or moved.
Patch