# How to update decorations at runtime with the new Hyprland Lua config?

**URL:** <http://forum.hypr.land/t/how-to-update-decorations-at-runtime-with-the-new-hyprland-lua-config/1596>\
**Category:** Bugs / FRs / Support\
**Tags:** question, help, hyprland, renderer, config\
**Created:** [May 17, 2026, 11:33am UTC](http://forum.hypr.land/t/how-to-update-decorations-at-runtime-with-the-new-hyprland-lua-config/1596 "2026-05-17T11:33:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![michi\_wtr](http://forum.hypr.land/letter_avatar_proxy/v4/letter/m/a5b964/32.png) [@michi\_wtr](http://forum.hypr.land/u/michi_wtr)\
**Post date:** [May 17, 2026, 11:33am UTC](http://forum.hypr.land/t/how-to-update-decorations-at-runtime-with-the-new-hyprland-lua-config/1596/1 "2026-05-17T11:33:07Z")

</div>

> **Hyprland version**
>
> ```auto
> Hyprland 0.55.1 built from branch v0.55.1 at commit a47147bc095e5b3be3eb8bd04f0ac242b968cd4d clean ([gha] Nix: update inputs).
> Date: Wed May 13 22:55:46 2026
> Tag: v0.55.1, commits: 7311
> 
> Libraries:
> Hyprgraphics: built against 0.5.1, system has 0.5.1
> Hyprutils: built against 0.13.1, system has 0.13.1
> Hyprcursor: built against 0.1.13, system has 0.1.13
> Hyprlang: built against 0.6.8, system has 0.6.8
> Aquamarine: built against 0.11.0, system has 0.11.0
> 
> Version ABI string: a47147bc095e5b3be3eb8bd04f0ac242b968cd4d_aq_0.11_hu_0.13_hg_0.5_hc_0.1_hlg_0.6
> no flags were set
> 
> ```

Since migrating from `hyprland.conf` to `hyprland.lua`, my old runtime decoration scripts stopped working correctly.

I used to dynamically change blur passes and active opacity during runtime, for example:

- cycling through different blur strengths
- temporarily disabling transparency when I want to focus

Previously, this worked perfectly with commands like:

```bash
hyprctl keyword decoration:blur:passes $new_blur

```

After switching to the Lua config system, this no longer behaves correctly.

I am still very new to both Hyprland and Lua, so I tried implementing the logic directly inside a Lua module:

```lua
local decoration_functions = {}

function decoration_functions.cycle_blur()
    local current = hl.get_config("decoration:blur:passes")
    local next_val = (current % 4) + 1

    hl.config({
        decoration = {
            blur = {
                passes = next_val
            }
        }
    })
end

function decoration_functions.toggle_opacity()
    local current = hl.get_config("decoration:active_opacity")

    if current >= 1.0 then
        hl.config({
            decoration = {
                active_opacity = 0.8,
                fullscreen_opacity = 0.8
            }
        })
    else
        hl.config({
            decoration = {
                active_opacity = 1.0,
                fullscreen_opacity = 1.0
            }
        })
    end
end

return decoration_functions

```

The strange thing is:

1. `hyprctl -j getoption` shows the updated values correctly
2. opacity changes only become visible after resizing a window or switching workspaces
3. blur changes never become visible, even though `getoption` reports the correct value

I also discovered that adding this to my `decorations.lua` partially helped:

```lua
hl.config({
    blur = {
        new_optimizations = false
    }
})

```

After disabling `new_optimizations`, blur changes sometimes become visible after resizing windows or changing workspaces, but the behavior is still buggy and inconsistent.

So my questions are:

- Is runtime updating of decorations currently supported properly with `hyprland.lua`?
- Am I using `hl.config()` incorrectly?
- Is there some way to force a redraw/re-render after changing decoration values?
- Or is this currently a limitation/bug in Hyprland?

I assume I cannot be the only person wanting dynamic runtime decoration changes.

Thanks a lot in advance!

— michi\_wtr

---

<div class="post-metadata">

**Author:** ![Ergon](http://forum.hypr.land/user_avatar/forum.hypr.land/ergon/32/1172_2.png) [@Ergon](http://forum.hypr.land/u/Ergon)\
**Post date:** [May 17, 2026, 12:38pm UTC](http://forum.hypr.land/t/how-to-update-decorations-at-runtime-with-the-new-hyprland-lua-config/1596/2 "2026-05-17T12:38:30Z")

</div>

> <https://github.com/hyprwm/Hyprland/pull/14590>
>
> \#### Describe your PR, what does it fix/add?
> 
> Fixes #14558.
> 
> Adds \`.refresh\`… annotations to most \`decoration:\*\` values and the four \`general:col.\*\_border\*\` values that needed them.
> 
> Annotation alone wasn't enough for a few cases (notably rounding ghosting and blur not repainting on disable), so I added the necessary minimal additions (\`m\_forceFullFrames = 2\`, \`damageMonitor\`, \`scheduleFrameForMonitor\`) to the propRefresher handlers for \`REFRESH\_BLUR\_FB\` and \`REFRESH\_WINDOW\_STATES\` to make the next frame actually repaint correctly.
> 
> \#### Is it ready for merging, or does it need work?
> 
> Ready.
