59 lines
No EOL
1.9 KiB
Nix
59 lines
No EOL
1.9 KiB
Nix
{ ... }:
|
|
{
|
|
flake.modules.homeManager.hyprland =
|
|
{ lib, nixosConfig, ... }:
|
|
let
|
|
lua = lib.generators.mkLuaInline;
|
|
mainMod = "SUPER";
|
|
workspacecount = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" ];
|
|
dsp = {
|
|
workspace = ws: lua ''hl.dsp.focus({ workspace = "${toString ws}" })'';
|
|
moveToWorkspaceSilent = ws: lua ''hl.dsp.window.move({ workspace = "${toString ws}", silent = true })'';
|
|
};
|
|
bind = keys: dispatcher: { _args = [ keys dispatcher ]; };
|
|
modKeys = [ "" "ALT" "CTRL" ];
|
|
workspaceRule =
|
|
lib.flatten (
|
|
lib.imap0 (i: mon: lib.imap0 (j: num: lib.mkMerge [
|
|
{
|
|
workspace = "${toString (i + 1)}${num}";
|
|
monitor = mon.output;
|
|
}
|
|
(lib.mkIf (j == 0) { default = true; })
|
|
])
|
|
workspacecount)
|
|
nixosConfig.aquaticConfig.hyprland.monitors
|
|
);
|
|
workspaceBinds =
|
|
lib.flatten (
|
|
lib.imap0 (i: mon:
|
|
let
|
|
prefix = toString (i + 1);
|
|
modKey = lib.elemAt modKeys i;
|
|
hasModifier = modKey != "";
|
|
isBase = i == 0;
|
|
in
|
|
lib.flatten (
|
|
lib.imap1 (j: num:
|
|
lib.optionals isBase [
|
|
(bind "${mainMod} + ${num}" (dsp.workspace "${prefix}${num}"))
|
|
(bind "${mainMod} + SHIFT + ${num}" (dsp.moveToWorkspaceSilent "${prefix}${num}"))
|
|
]
|
|
++ lib.optionals hasModifier [
|
|
(bind "${mainMod} + ${modKey} + ${num}" (dsp.workspace "${prefix}${num}"))
|
|
(bind "${mainMod} + ${modKey} + SHIFT + ${num}" (dsp.moveToWorkspaceSilent "${prefix}${num}"))
|
|
]
|
|
)
|
|
workspacecount
|
|
)
|
|
)
|
|
(lib.take 3 nixosConfig.aquaticConfig.hyprland.monitors)
|
|
);
|
|
in
|
|
{
|
|
wayland.windowManager.hyprland.settings = {
|
|
workspace_rule = workspaceRule;
|
|
bind = workspaceBinds;
|
|
};
|
|
};
|
|
} |