diff --git a/modules/home/desktop/i3.nix b/modules/home/desktop/i3.nix index d9d16d8..fbec6d5 100644 --- a/modules/home/desktop/i3.nix +++ b/modules/home/desktop/i3.nix @@ -31,10 +31,18 @@ }; }; - xsession.windowManager.i3 = { + xsession.windowManager.i3 = let + modifier = "Mod4"; + wsAmount = 10; + genSpaces = f: map builtins.toString ( + builtins.genList f wsAmount + ); + workspaces = genSpaces (x: x+1); + + in { enable = true; config = { - modifier = "Mod4"; + modifier = modifier; terminal = "alacritty"; menu = "rofi -show drun"; @@ -48,22 +56,28 @@ focus.wrapping = "yes"; keybindings = let - modifier = config.xsession.windowManager.i3.config.modifier; - # 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) + 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); + + workspKeys = genSpaces (x: x); + + in lib.mkOptionDefault ( + (zipBinds "+" "focus" moveKeys moveDirs) // + (zipBinds "+Shift+" "move" moveKeys moveDirs) // + (zipBinds "+" "workspace number" workspKeys workspaces) // + (zipBinds "+Shift+" "move container to workspace number" + workspKeys workspaces) + ); bars = let stylix_bar = {