2025-09-09 18:03:42 +02:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
|
lib = pkgs.lib;
|
|
|
|
|
qs = "${pkgs.quickshell}/bin/qs";
|
|
|
|
|
|
|
|
|
|
# Niri built-in actions
|
|
|
|
|
inherit (config.lib.niri.actions)
|
|
|
|
|
spawn
|
|
|
|
|
close-window
|
|
|
|
|
maximize-column
|
|
|
|
|
screenshot-window
|
|
|
|
|
screenshot
|
|
|
|
|
focus-column-left
|
|
|
|
|
focus-column-right
|
|
|
|
|
focus-workspace-up
|
|
|
|
|
focus-workspace-down
|
2025-09-09 18:16:30 +02:00
|
|
|
quit
|
2025-09-09 18:03:42 +02:00
|
|
|
;
|
|
|
|
|
|
|
|
|
|
# Helper to call QuickShell
|
|
|
|
|
qsCall =
|
|
|
|
|
args:
|
|
|
|
|
spawn (
|
|
|
|
|
[
|
|
|
|
|
qs
|
|
|
|
|
"-c"
|
|
|
|
|
"DankMaterialShell"
|
|
|
|
|
"ipc"
|
|
|
|
|
"call"
|
|
|
|
|
]
|
|
|
|
|
++ args
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
# Generate workspace focus binds (Mod+1 to Mod+9)
|
|
|
|
|
wsBinds = builtins.listToAttrs (
|
|
|
|
|
builtins.genList (i: {
|
|
|
|
|
name = "Mod+${toString (i + 1)}";
|
|
|
|
|
value.action.focus-workspace = i + 1;
|
|
|
|
|
}) 9
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
programs.niri.settings.binds = lib.mkMerge [
|
|
|
|
|
# --- Static Keybindings ---
|
|
|
|
|
{
|
|
|
|
|
# --- Media Keys ---
|
|
|
|
|
|
|
|
|
|
# --- Audio / Brightness ---
|
|
|
|
|
"XF86AudioMute" = {
|
|
|
|
|
allow-when-locked = true;
|
|
|
|
|
action = qsCall [
|
|
|
|
|
"audio"
|
|
|
|
|
"mute"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
"XF86AudioMicMute" = {
|
|
|
|
|
allow-when-locked = true;
|
|
|
|
|
action = qsCall [
|
|
|
|
|
"audio"
|
|
|
|
|
"micmute"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
"XF86AudioRaiseVolume" = {
|
|
|
|
|
allow-when-locked = true;
|
|
|
|
|
action = qsCall [
|
|
|
|
|
"audio"
|
|
|
|
|
"increment"
|
|
|
|
|
"5"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
"XF86AudioLowerVolume" = {
|
|
|
|
|
allow-when-locked = true;
|
|
|
|
|
action = qsCall [
|
|
|
|
|
"audio"
|
|
|
|
|
"decrement"
|
|
|
|
|
"5"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
"XF86MonBrightnessUp" = {
|
|
|
|
|
allow-when-locked = true;
|
|
|
|
|
action = qsCall [
|
|
|
|
|
"brightness"
|
|
|
|
|
"increment"
|
|
|
|
|
"5"
|
|
|
|
|
"amdgpu_bl1"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
"XF86MonBrightnessDown" = {
|
|
|
|
|
allow-when-locked = true;
|
|
|
|
|
action = qsCall [
|
|
|
|
|
"brightness"
|
|
|
|
|
"decrement"
|
|
|
|
|
"5"
|
|
|
|
|
"amdgpu_bl1"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# --- System Actions ---
|
|
|
|
|
"Ctrl+Alt+L".action = qsCall [
|
|
|
|
|
"lock"
|
|
|
|
|
"lock"
|
|
|
|
|
];
|
|
|
|
|
"Mod+V".action = qsCall [
|
|
|
|
|
"clipboard"
|
|
|
|
|
"toggle"
|
|
|
|
|
];
|
|
|
|
|
"Mod+U".action = qsCall [
|
|
|
|
|
"settings"
|
|
|
|
|
"toggle"
|
|
|
|
|
];
|
|
|
|
|
"Mod+M".action = qsCall [
|
|
|
|
|
"processlist"
|
|
|
|
|
"toggle"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# --- Screenshots ---
|
|
|
|
|
"Print".action.screenshot-screen = {
|
|
|
|
|
write-to-disk = true;
|
|
|
|
|
};
|
|
|
|
|
"Mod+Shift+Alt+S".action = screenshot-window;
|
|
|
|
|
"Mod+Shift+S".action.screenshot = {
|
|
|
|
|
show-pointer = false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# --- Launchers ---
|
|
|
|
|
"Mod+D".action = spawn (lib.getExe pkgs.fuzzel);
|
|
|
|
|
"Mod+Return".action = spawn (lib.getExe pkgs.alacritty);
|
|
|
|
|
|
|
|
|
|
# --- Window / Layout ---
|
|
|
|
|
"Mod+W".action = close-window;
|
|
|
|
|
"Mod+F".action = maximize-column;
|
|
|
|
|
|
|
|
|
|
# --- Navigation ---
|
|
|
|
|
"Mod+Left".action = focus-column-left;
|
|
|
|
|
"Mod+Right".action = focus-column-right;
|
|
|
|
|
"Mod+Down".action = focus-workspace-down;
|
|
|
|
|
"Mod+Up".action = focus-workspace-up;
|
2025-09-09 18:16:30 +02:00
|
|
|
|
|
|
|
|
"Mod+Shift+E".action = quit;
|
2025-09-09 18:03:42 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# --- Dynamic Workspace Binds ---
|
|
|
|
|
wsBinds
|
|
|
|
|
];
|
|
|
|
|
}
|