Hyprland 0.56 ships with expanded Lua scripting, motion blur, and zero breaking changes
The July 20 release packs 335 commits into a tiling compositor that refuses to ask you to relearn your config.
Hyprland 0.56 landed on July 20, 2026, and it’s the kind of update that turns a polished compositor into a programmable platform. Lead developer Vaxry pushed 335 commits across 300 files, adding roughly 13,300 lines while deleting about 4,900. And despite the sheer volume, there are zero breaking changes. Not one.
Keep in mind that a jump this large usually means you’re going to spend your weekend hunting down broken bindings. Vaxry explicitly called it out: "No breaking changes! :)" Given the size of the update, that’s honestly unusual for a C++ project this mature. The release also marks a clear pivot from the v0.55 scrolling layout overhaul into scripting depth and visual polish. Two major versions in six months. That’s a pace most window managers wouldn’t dare attempt.
The Lua expansion (and why it matters)
The single biggest shift in v0.56 is the Lua API. Hyprland nearly doubled its scripting surface area. You can now write custom live gestures entirely in Lua, query keyboard state mid-press via is_key_down, and drop into an interactive REPL through hyprctl thanks to a contribution from @Dregu. If you’ve ever wanted to bind a macro to a specific monitor’s physical dimensions, physicalWidth and physicalHeight are finally there.
The plugin system got its own hook line. New APIs let custom plugins register for and dispatch compositor events, while get_loaded_plugins gives you basic introspection. Stub type generation for the config file means IDE autocomplete actually works now. Next, the workspace management functions expanded with raw set_ APIs and a change_id event that fires whenever a workspace’s contents shift.
Rendering, layout, and the invisible refactor
Visually, v0.56 brings motion blur you can toggle per window. Not cheap. It also adds HDR tonemapping controls, gradient animations for shadows and glows, and a no_auto_hdr rule if your panel is screaming at you at max brightness. Wayland protocol-wise, xdg interactive drags now work fully, background effects have their own protocol, and input capture gets a partial permission-based implementation.
Head here to check the full diff, but keep in mind that half the code didn’t actually touch the user-facing experience. Vaxry and the team extracted layout control, monitor queries, workspace state, and view state from the monolithic Compositor class. The animation manager got a cleaner lifecycle, fullscreen logic is now testable, and per-frame heap allocations in the renderer are being trimmed. These are the kind of changes that don’t show up in a changelog but prevent the codebase from becoming a maintenance nightmare.
It’s a rather ambitious release for a project that’s technically still in its late-beta phase, though the Lua expansion and motion blur do make it feel closer to desktop-ready. However, at the same time, the post-release tracker already shows a regression. Issue #15494 reports window animations running painfully slow for some users after the refactor. Closed now, but it’s a reminder that extracting animation state from CCompositor probably shifted timing on a few configs. Ecosystem projects like nix modules and hyprpm plugins are already opening support issues. If you rely on community tooling, give it a week to catch up.
You can grab the release notes straight from GitHub, compile from source if you prefer the bleeding edge, or wait for your distro packages to stabilize. The commit history is public, the API is documented, and if you write a Lua script that works well with v0.56, the team will probably appreciate it.
