Skip to content

v0.5.0

Latest

Choose a tag to compare

@BlueManCZ BlueManCZ released this 07 Oct 19:09
· 1 commit to main since this release
e148d22

Added

  • Plugins page for configuring Hyprland plugins: a schema-driven UI for natively supported plugins (starting with Hypr Dynamic Cursors) plus a list editor for arbitrary plugin { … } settings, with live-apply, detection of plugin settings from your existing config, and a prompt to add hyprpm reload to autostart when a supported plugin is not loaded (#60)
  • The window rule dialog supports multiple actions per rule: actions are a dynamic list of blocks that can be added and removed individually, instead of a single action per rule; anonymous rules with multiple effects now also load as one rule instead of splitting into separate entries (#57, #58)
  • The keybind dialog's "Run command" action can pick from installed apps: a search button next to the Command field opens the same app picker used by autostart entries, filling the field with the selected app's command

Changed

  • The window rule dialog autofills new condition rows from the last picked window: after picking a window, "+ Condition" pre-fills the matching value, and changing a condition's type from the dropdown updates the value to match the picked window (#56)

Fixed

  • A Norwegian keyboard layout is saved and applied correctly in Lua mode. Its xkb code is no, which is also one of Hyprland's boolean words, so HyprMod wrote kb_layout = false and the compositor rejected it with "string type requires a string". Every string-typed setting whose value starts with no, on or off was affected, and an already-correct layout was rewritten on the next save of any unrelated setting. Requires hyprland-config 0.9.19 (#96)
  • Opaque Lua callbacks, custom dispatchers, and parsed bind variants the editor cannot safely represent are now read-only. Editing one previously selected the first available action and could save an empty exec command, silently breaking the shortcut (#88)
  • A described keybind from a Lua config shows its real action again. Omarchy's SUPER + B read as Browser, the description Hyprland reports ahead of the dispatcher, so HyprMod had no command to show or edit. Requires hyprland-config 0.9.18 (#88)
  • A Lua config that prints something no longer stops HyprMod from starting. The reader took the config's stdout output as part of its own data and failed to parse it, so the first launch showed nothing and every launch after that showed an empty window. A config HyprMod genuinely cannot read now gets a window saying what the parser rejected, with a retry, instead of a traceback in the terminal. Requires hyprland-config 0.9.17 (#87)
  • The Mode picked for a "Toggle fullscreen" keybind is saved again in Lua mode. Every mode emitted hl.dsp.window.fullscreen(), so a bind set to Maximize toggled full screen instead. The "No gaps" mode is gone from the picker: Hyprland has read every mode but Maximize as full screen since 0.43, so it never did anything. Requires hyprland-config 0.9.16 (#86)
  • Editing a window rule to drop an action, or narrowing its conditions so a window no longer matches, now releases the windows it was applied to. HyprMod also set each effect as a per-window property in Lua mode, and those outrank the rule and survive a config reload. Requires hyprland-state 0.4.7 (#79)
  • A window rule with more than one action now applies all of them when pushed to the running compositor, instead of only the first. Requires hyprland-config 0.9.15 (#79)
  • Saving now reloads the compositor when window or layer rules changed, so deleting, reordering, or discarding a rule takes effect instead of waiting for the next HyprMod launch. Hyprland's autoreload never saw the write: it watches the config file's inode, and an atomic save replaces it (#79)
  • Re-running install.sh updates HyprMod itself again, not just its dependencies. It ran uv tool upgrade, which re-resolves dependencies but can keep the git commit already installed; it now reinstalls from the source URL (#79)
  • Setting a rotated monitor back to Normal now works in Lua mode; the display stayed rotated and the Transform dropdown snapped back to the old angle. Hyprland's Lua config keeps the previous value for any key left out of an applied monitor line, and the line omitted transform when it was 0. Clearing a Bit Depth or Color Management override was broken the same way. Requires hyprland-monitors 0.9.0 and hyprland-state 0.4.6 (#82)
  • pycairo is declared as a direct dependency, so packagers no longer end up with an install where the monitor layout preview, the bezier curve editor, and the animation preview are blank. PyGObject needs pycairo to hand a drawing context to Python, and distro packages of PyGObject list pycairo as optional, so drawing failed with nothing shown to the user. An install that is still missing the bindings now says so in a dialog at startup instead of just drawing empty boxes (#78)
  • Recording a media, brightness, or other XF86 key in the keybind dialog no longer produces a bind Hyprland rejects with "Unknown keysym"; GDK reports these keysyms without their XF86 prefix (AudioRaiseVolume), which is not a name xkb resolves, so the prefix is now restored before the key reaches the config (#69)
  • Recording a shortcut whose key sits on a shifted or AltGr level no longer produces a bind that never fires; Hyprland matches binds against the base-level keysym, so the captured key is now resolved with every modifier cleared instead of only SHIFT, fixing AltGr+Q on a Czech layout being recorded as MOD5, backslash where Hyprland only ever looks for q (#69)
  • Recording a shortcut while a secondary keyboard layout is active no longer produces a bind that never fires; unless resolve_binds_by_sym is set, Hyprland resolves binds through the first layout in input:kb_layout regardless of which one is active, so on cz,us the number row key recorded as 2 from the us layout is now recorded as ecaron (#73)
  • The "Resize window" keybind action now takes a width and a height with a relative/exact mode picker, instead of a free-text argument field. It sits among direction-picker actions, so the old field invited a direction letter that Hyprland cannot resize by and the bind failed to apply. Percentage values keep the text field, since they have no spin-button form (#70)
  • Ten keybind actions that had no Lua translation, among them "Move window or group", "Pass key to window" and "Lock all groups", no longer fail with "No Lua mapping" in Lua mode; requires hyprland-config 0.9.13 (#74)
  • The installed desktop entry launches from app menus and docks again: Exec now points at the absolute path of the hyprmod binary, since GUI launchers often start without ~/.local/bin on $PATH (#67)
  • Window rules with multiple effects no longer lose every effect after the first when saved in Lua mode; rule lines are now normalized so the Lua serializer emits all effects (#60)
  • Changing a condition from a boolean type (like xwayland) to a text type (like initial_class) no longer leaves the literal string "false" in the value field (#56)

New Contributors

Full Changelog: v0.4.0...v0.5.0