After upgrading to Hyprland 0.54, nest no longer moves windows to correct workspaces. The logs show:
Tried to move window 0x0x... to N but a move could not be completed
Root cause
Hyprland 0.54 changed the format of window addresses in IPC events (like movewindowv2, openwindow). The address field now comes with the 0x prefix already included.
However, hyprland-rs v0.4.0-beta.3 uses Address::fmt_new() for parsing these events, which always prepends 0x to the address. This results in a double prefix like 0x0x1a2b3c4d.
When nest tries to move the window using this malformed address, Hyprland returns "Invalid value" because no window exists with address 0x0x....
Affected code
In src/state/mod.rs, the move_window function calls:
DispatchType::MoveToWorkspace(
WorkspaceIdentifierWithSpecial::Id(workspace_id),
Some(WindowIdentifier::Address(address.clone())),
)
The address here comes from the event listener and has the double 0x prefix.
Fix needed
Either:
- Update
hyprland-rs to use Address::new() instead of Address::fmt_new() for event parsing (handles both prefixed and non-prefixed addresses correctly)
- Or Hyprland reverts to the old address format without prefix in events
Related: The format workspace,address:0x... for movetoworkspace is actually correct and matches Hyprland's documented API.
After upgrading to Hyprland 0.54, nest no longer moves windows to correct workspaces. The logs show:
Root cause
Hyprland 0.54 changed the format of window addresses in IPC events (like
movewindowv2,openwindow). Theaddressfield now comes with the0xprefix already included.However,
hyprland-rsv0.4.0-beta.3 usesAddress::fmt_new()for parsing these events, which always prepends0xto the address. This results in a double prefix like0x0x1a2b3c4d.When nest tries to move the window using this malformed address, Hyprland returns "Invalid value" because no window exists with address
0x0x....Affected code
In
src/state/mod.rs, themove_windowfunction calls:The
addresshere comes from the event listener and has the double0xprefix.Fix needed
Either:
hyprland-rsto useAddress::new()instead ofAddress::fmt_new()for event parsing (handles both prefixed and non-prefixed addresses correctly)Related: The format
workspace,address:0x...formovetoworkspaceis actually correct and matches Hyprland's documented API.