Hyprland 0.55 Lua-Migration - kleiner Erfahrungsbericht

  • Hyprland 0.55 Lua-Migration - kleiner Erfahrungsbericht

    Moin zusammen,

    ich bin vermutlich recht früh in die Hyprland-0.55-Lua-Migration reingestolpert und wollte mal kurz festhalten, was hier so passiert ist. Vielleicht erspart es irgendwem ein paar graue Haare.

    Kurzfassung: Die neue Lua-Config funktioniert, aber sie fühlt sich am Anfang schon ein bisschen so an, als hätte jemand aus einer übersichtlichen Config ein kleines Softwareprojekt gemacht. Mächtig, ja. Übersichtlich? Naja. Kommt drauf an, wie viel Kaffee schon im Blut ist.

    Ausgangslage:

    • Hyprland 0.55.0
    • vorher klassische hyprland.conf
    • Noctalia Shell / Quickshell
    • hyprexpo per hyprpm
    • verschiedene Layout-Binds für dwindle, master und scrolling
    • Mouse-Binds für Fenster bewegen/resizen

    Was bei mir kaputtging oder angepasst werden musste:

    1. Einige alte Config-Optionen waren nicht mehr gültig

    Code
    "misc:vfr" ist jetzt "debug:vfr"
    "dwindle:pseudotile" 

    gibt es so nicht mehr und musste raus.

    2. Alte Dispatcher-Aufrufe funktionieren unter Lua anders

    Einige Sachen, die vorher in der .conf simpel waren, mussten in Lua anders gebaut werden.

    Beispiel: Fenster per Super + linke Maustaste bewegen.

    Alt:

    Code
    bindm = $mainMod, mouse:272, movewindow

    In Lua musste daraus sinngemäß werden:

    Code
    hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })

    3. Layout-Wechsel per hyprctl keyword ging nicht mehr

    Meine alten Binds zum Umschalten zwischen dwindle/master/scrolling liefen über:

    Code
    hyprctl keyword general:layout master

    Hyprland 0.55 meldete dazu bei Lua-Configs:

    Code
    keyword can't work with non-legacy parsers. Use eval.

    Ich habe das dann direkt in Lua gelöst:

    Code
    local function set_layout(name)
       return function()
           hl.config({
               general = {
                   layout = name,
               },
           })
       end
    end

    Und dann:

    Code
    hl.bind(mainMod .. " + CTRL + 8", set_layout("master"))
    hl.bind(mainMod .. " + CTRL + 7", set_layout("dwindle"))
    hl.bind(mainMod .. " + CTRL + 9", set_layout("scrolling"))

    4. hyprexpo / Hyprland-Plugins

    Bei mir war hyprexpo zwar in "hyprpm list" noch als enabled markiert, aber:

    Code
    hyprctl plugin list

    sagte:

    Code
    no plugins loaded

    "hyprpm reload" wollte nicht sauber, und "hyprpm update" kam nicht komplett durch. Soweit ich gesehen habe, war der offizielle hyprland-plugins Stand zu dem Zeitpunkt noch nicht sauber für meine laufende Hyprland-0.55-Version gebaut bzw. geladen. Also: Expo erstmal auskommentiert und warten, bis upstream nachzieht.

    5. Noctalia App-Launcher

    Das war der fiesere Teil.

    Noctalia startete Apps in meinem Setup intern über:

    Code
    hyprctl dispatch -- exec ...

    Mit Lua-Config wurde daraus bei mir quasi ein ungültiger Lua-Ausdruck. Ergebnis: Apps wie Vivaldi, Thunar, Texteditor usw. starteten aus dem Launcher nicht mehr richtig.

    Gefixt wurde es bei mir in:

    Code
    /etc/xdg/quickshell/noctalia-shell/Services/Compositor/HyprlandService.qml

    Die Spawn-Funktion musste von altem

    Code
    "dispatch -- exec" 

    auf Lua-kompatibles

    Code
    "hl.dsp.exec_cmd(...)" 

    umgebaut werden. Ich gehe aber davon aus, dass Noctalia das bald selbst patcht, falls Hyprland 0.55 breiter ankommt und das Problem dort ebenfalls auftritt.

    6. Struktur der Config

    Früh bei der Migration ist mir aufgefallen, wie unübersichtlich die Umstellung auf Lua wirkt, wenn alles in einer einzigen Config landet. Aus einer vorher recht direkt lesbaren hyprland.conf wurde sehr schnell ein großer Lua-Klumpen: funktional, aber schön ist anders.

    Deswegen habe ich die Config relativ früh in Module zerlegt:

    • "hyprland.lua" als Einstieg
    • "modules/environment.lua"
    • "modules/monitor.lua"
    • "modules/autostart.lua"
    • "modules/options.lua"
    • "modules/animations.lua"
    • "modules/binds.lua"
    • "modules/rules.lua"

    Das macht Lua nicht automatisch schön, aber wenigstens findet man Dinge wieder, ohne innerlich zu altern.

    Mein Fazit:

    Lua ist für Hyprland sicher mächtig und langfristig wahrscheinlich spannend. Aber für normale Desktop-Configs ist es erstmal deutlich weniger direkt als die alte ".conf". Wer nur Windowrules, Binds, Layouts und ein bisschen Optik hat, wird sich vermutlich fragen, warum aus drei lesbaren Zeilen plötzlich eine kleine Funktion wurde.

    Trotzdem: Es läuft jetzt. Die meisten Probleme waren keine Totalschäden, sondern eher neue Syntax, neue Dispatch-Logik und Tools, die noch vom alten Verhalten ausgehen.

    Und ja: Ich will mein altes hyprland.conf-Gefühl trotzdem ein bisschen zurück. :grinning_squinting_face:

    Grüße aus dem Terminal-Chaos ✨
    wo CachyOS, Hyprland und Noctalia laufen und Btrfs/Snapper danebensteht,
    falls mein „ich teste nur kurz was“ mal wieder schneller ist als mein Verstand und zur Kernel Panic wird.

    Meine Hardware

    Main Rig (2020): Ryzen 7 3700X · 32 GB RAM · RTX 4070 · 1 TB NVMe + 2 TB WD Extern SSD · CachyOS · Hyprland/Noctalia
    Oldguy Lappy (2011): AMD A8-3510MX · 8 GB RAM · Radeon HD 6620G/66xxM · 750 GB HDD · Debian 13 · Hyprland/Noctalia

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!