Add workspace abstraction

This commit is contained in:
muon 2024-06-14 01:08:41 +00:00
parent b1071c246c
commit bec17bcb0f

View file

@ -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 = {