diff --git a/modules/home/desktop/i3.nix b/modules/home/desktop/i3.nix index 69d880d..d9d16d8 100644 --- a/modules/home/desktop/i3.nix +++ b/modules/home/desktop/i3.nix @@ -49,12 +49,21 @@ keybindings = let modifier = config.xsession.windowManager.i3.config.modifier; - in lib.mkOptionDefault { - "${modifier}+h" = "focus left"; - "${modifier}+j" = "focus down"; - "${modifier}+k" = "focus up"; - "${modifier}+l" = "focus right"; - }; + + # modKeyComb: string -> valueAction: string + # -> keys: [string] -> values: [string] + # -> keybindings: attrSet { string -> string } + zipBinds = comb: action: keys: values: ( + builtins.listToAttrs (lib.zipListsWith (k: v: + { name = "${modifier}${comb}${k}"; value = "${action} ${v}"; } + ) keys values) + ); + + moveKeys = ["h" "j" "k" "l"]; + moveDirs = ["left" "down" "up" "right"]; + focus = zipBinds "+" "focus" moveKeys moveDirs; + move = zipBinds "+Shift+" "move" moveKeys moveDirs; + in lib.mkOptionDefault (focus // move); bars = let stylix_bar = {