137 lines
3 KiB
Nix
137 lines
3 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
scope,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib)
|
|
range
|
|
nameValuePair
|
|
mapAttrs'
|
|
mergeAttrsList
|
|
;
|
|
inherit (builtins) listToAttrs replaceStrings;
|
|
hBinds = {
|
|
H = "left";
|
|
L = "right";
|
|
};
|
|
vBinds = {
|
|
J = "down";
|
|
K = "up";
|
|
};
|
|
makeDirBind =
|
|
mods: cmd: keys:
|
|
mapAttrs' (
|
|
key: dir:
|
|
nameValuePair "${mods}+${key}" {
|
|
action = "${replaceStrings [ "$DIR" ] [ "${dir}" ] "${cmd}"}";
|
|
}
|
|
) keys;
|
|
makeTagBind =
|
|
mods: cmd:
|
|
listToAttrs (
|
|
map (num: {
|
|
name = "${mods}+${builtins.toString (lib.mod num 10)}";
|
|
value = {
|
|
spawn = [
|
|
"tagctl"
|
|
cmd
|
|
(builtins.toString num)
|
|
];
|
|
};
|
|
}) (range 1 10)
|
|
);
|
|
getApp = app: lib.singleton (lib.getExe config.apps.${app});
|
|
in
|
|
scope "user.desktops.niri.binds"
|
|
<| mergeAttrsList [
|
|
{
|
|
"Mod+Grave".action = "focus-monitor-next";
|
|
"Mod+Shift+Grave".action = "move-column-to-monitor-next";
|
|
"Mod+Minus".spawn = [
|
|
"tagctl"
|
|
"toggle-tag"
|
|
"99"
|
|
];
|
|
"Mod+Equal".spawn = [
|
|
"tagctl"
|
|
"toggle-tag"
|
|
"101"
|
|
];
|
|
"Mod+D".spawn = [
|
|
"qs"
|
|
"ipc"
|
|
"call"
|
|
"launch"
|
|
"toggle"
|
|
];
|
|
"Mod+F".spawn = (getApp "browser");
|
|
"Mod+E".spawn = (getApp "fm");
|
|
"Mod+Return".spawn = (getApp "terminal");
|
|
"Mod+Shift+E".spawn = [
|
|
"qs"
|
|
"ipc"
|
|
"call"
|
|
"logout"
|
|
"toggle"
|
|
];
|
|
# "Mod+Equal".spawn = (getAppName "passwordManager"); # niri-tag needs proper scratchpads smh
|
|
"Mod+Shift+Q".action = "close-window";
|
|
"Mod+Shift+S".action = "screenshot";
|
|
"Mod+R".action = "switch-preset-column-width";
|
|
"Mod+Shift+R".action = "maximize-column";
|
|
"XF86AudioLowerVolume".spawn = [
|
|
"volumectl"
|
|
"-u"
|
|
"down"
|
|
];
|
|
"XF86AudioMute".spawn = [
|
|
"volumectl"
|
|
"toggle-mute"
|
|
];
|
|
"XF86AudioNext".spawn = [
|
|
"playerctl"
|
|
"next"
|
|
];
|
|
"XF86AudioPlay".spawn = [
|
|
"playerctl"
|
|
"play-pause"
|
|
];
|
|
"XF86AudioPrev".spawn = [
|
|
"playerctl"
|
|
"previous"
|
|
];
|
|
"XF86AudioRaiseVolume".spawn = [
|
|
"volumectl"
|
|
"-u"
|
|
"up"
|
|
];
|
|
"XF86AudioStop".spawn = [
|
|
"playerctl"
|
|
"stop"
|
|
];
|
|
"XF86MonBrightnessUp".spawn = [
|
|
"brightnessctl"
|
|
"s"
|
|
"5%+"
|
|
];
|
|
"XF86MonBrightnessDown".spawn = [
|
|
"brightnessctl"
|
|
"s"
|
|
"5%-"
|
|
];
|
|
"Mod+Space".action = "switch-focus-between-floating-and-tiling";
|
|
"Mod+Shift+Space".action = "toggle-window-floating";
|
|
"Mod+Ctrl+Space".action = "fullscreen-window";
|
|
"Mod+C".action = "center-window";
|
|
}
|
|
(makeDirBind "Mod" "focus-window-$DIR" vBinds)
|
|
(makeDirBind "Mod" "focus-column-or-monitor-$DIR" hBinds)
|
|
(makeDirBind "Mod+Shift" "consume-or-expel-window-$DIR" hBinds)
|
|
(makeDirBind "Mod+Ctrl" "move-column-$DIR-or-to-monitor-$DIR" hBinds)
|
|
(makeDirBind "Mod+Ctrl" "move-window-$DIR" vBinds)
|
|
(makeTagBind "Mod" "toggle-tag")
|
|
(makeTagBind "Mod+Shift" "toggle")
|
|
(makeTagBind "Mod+Ctrl" "exclusive-tag")
|
|
]
|