Hyprland 0.55 Announces Major Shift to Lua Configuration Files
Hyprland 0.55 announced the switch to Lua for its config files

I am thrilled to announce Hyprland 0.55, a massive update introducing Lua as the new standard for configuration files while maintaining backward compatibility. This release empowers you to define custom layouts via a new Layout API, improves scrolling mechanics, and enhances color accuracy with ICC profiles. We have also refined the renderer for better performance and included numerous quality-of-life fixes to elevate your desktop experience.
With Lua, we've also added a Layout API for you to define your own layouts directly in the config.
- rdtsc
It's just part of what I call the config pendulum.
Simple config -> (Need to do more complicated things) -> Add override levels -> (Need even more flexibility) -> Add a Turing complete language -> (Things get ridiculous, lots of spaghetti code outside of version control. Time for a reset) -> goto "Simple config"
It's fine. I am not saying it's wrong or right. I've gone through the cycle a few times in some projects. On the other hand, think of it as your project is lucky to be used long enough to have these problems. To feel better about it think of it as a spiral. The next "Simple config" is a slightly better version of the first.
- tombert
I have grown pretty negative opinions of “using a programming language as a config language” after semi-recently having to spend a lot of time screwing around with someone’s Gradle Groovy abomination. Not even to mention how quickly Nix can get annoying.
I have to ask…why do people want a Turing complete language to configure stuff? I use Sway personally, which is very configurable but for any even remotely complicated logic I shell out to a set of Rust programs.
- dietr1ch
Old news? 0.56 is out now https://hypr.land/news/update56/
- kelvinjps10
I might be a good change but I left hyprland because,y configuration kept breaking. It's a good window manager so I'll change back once it gets stable. By now i3
- v3ss0n
That's why I love qtile, written in python, modify everything in python, can import any module of it and can install anything, extend existing layout without forking to support very interesting and customized WM layouts, all entirely in python, call any python code in WM.
- nickjj
It's neat that Hyprland lets you define layouts in its config but I like niri's approach.
It uses KDL (an established document / config language) and slightly extends it to add useful things like being able to include files.
For example, here's mine: https://github.com/nickjj/dotfriedrice/blob/master/.config/n...
What you end up with is a config file that's natural to read with no prior knowledge about anything and if you want to look something specific up, you know it's officially documented and not some home grown pattern someone created. There's a certain amount of comfort and stability you get with a "what you see is what you get" approach.
I never felt like I needed variables, conditions, functions or loops with niri's config.
- Havoc
TIL I'm on 0.56 and hadn't realized there is a change.
Thinking I'll wait as long as I can and then just get an LLM to translate current config to lua once the internet has been seeded a bit with examples
- ianm218
Related to Lua - I've been maintaining this project that has Lua 5.1-5.5 in one Rust project [1]. The main reason to use it over mlua or the normal C Lua is for something that plays nicely with WASM/ general cross compilation or wants to support several different versions of Lua.
Seems like hyprland is on C++ so maybe not a direct use case but thought Lua people in general might be interested.