refactor(hyprland): add keybind action shape

This commit is contained in:
2026-10-10 14:59:38 -04:00
parent 29df93631e
commit 9a3105a736
3 changed files with 26 additions and 6 deletions

View File

@@ -14,7 +14,10 @@ in
config = lib.mkIf config.modules.desktop.apps.ghostty.enable {
registry.keybind.${config.networking.hostName}.ghostty = {
keys = "SUPER + Return";
command = "${pkgs.ghostty}/bin/ghostty";
action = {
kind = "exec";
command = "${pkgs.ghostty}/bin/ghostty";
};
};
home-manager.users.${user}.home.packages = [ pkgs.ghostty ];

View File

@@ -8,9 +8,14 @@ let
mkBind = keybind: {
_args = [
keybind.keys
(lib.generators.mkLuaInline "hl.dsp.exec_cmd(${toLua keybind.command})")
(mkAction keybind.action)
];
};
mkAction =
action:
lib.generators.mkLuaInline ({ exec = "hl.dsp.exec_cmd(${toLua action.command})"; }.${action.kind});
keybinds = lib.attrValues (
lib.attrByPath [ config.networking.hostName ] { } config.registry.keybind
);

View File

@@ -15,10 +15,22 @@
description = "Sets the key chord for this desktop keybind.";
};
command = lib.mkOption {
type = lib.types.str;
example = "ghostty";
description = "Command executed by this keybind.";
action = lib.mkOption {
type = lib.types.submodule {
options = {
kind = lib.mkOption {
type = lib.types.enum [ "exec" ];
description = "Selects the keybind action kind.";
};
command = lib.mkOption {
type = lib.types.str;
example = "ghostty";
description = "Command executed by this keybind.";
};
};
};
description = "Declares the action this keybind runs.";
};
};
};