blob: 5fd07fe68b94c20558ba8251480a974953b625ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
{
config,
lib,
...
}:
let
workspaceBinds =
lib.concatMapStringsSep "\n"
(
{ key, workspace }:
''
Mod+${key} { focus-workspace "${workspace}"; }
Mod+Shift+${key} { move-column-to-workspace "${workspace}"; }''
)
[
{
key = "1";
workspace = "1";
}
{
key = "2";
workspace = "2";
}
{
key = "3";
workspace = "3";
}
{
key = "4";
workspace = "4";
}
{
key = "5";
workspace = "5";
}
{
key = "6";
workspace = "6";
}
{
key = "7";
workspace = "7";
}
{
key = "8";
workspace = "8";
}
{
key = "9";
workspace = "9";
}
{
key = "0";
workspace = "10";
}
];
in
{
config.wayland.windowManager.niri.extraConfig = ''
binds {
// Niri defaults retained alongside the established launch and close bindings.
Mod+Shift+Slash { show-hotkey-overlay; }
Mod+O repeat=false { toggle-overview; }
Mod+Q repeat=false { close-window; }
Mod+Shift+Q repeat=false { close-window; }
${lib.optionalString config.desktop.enable ''Mod+R hotkey-overlay-title="Run an Application: rofi" { spawn "${lib.getExe config.desktop.rofi.package}" "-show" "drun"; }''}
${lib.optionalString config.terminal.kitty.enable ''
Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { spawn "${lib.getExe config.terminal.kitty.package}"; }
Mod+T { spawn "${lib.getExe config.terminal.kitty.package}"; }''}
${lib.optionalString (config.terminal.kitty.enable && config.file-management.yazi.enable)
''Mod+F { spawn "${lib.getExe config.terminal.kitty.package}" "--class" "yazi" "--title" "Yazi" "-e" "${lib.getExe config.file-management.yazi.package}"; }''
}
// Niri's column/window-aware directional navigation.
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+Ctrl+H { move-column-left; }
Mod+Ctrl+J { move-window-down; }
Mod+Ctrl+K { move-window-up; }
Mod+Ctrl+L { move-column-right; }
// Preserve the old Shift movement muscle memory as aliases.
Mod+Shift+H { move-column-left; }
Mod+Shift+J { move-window-down; }
Mod+Shift+K { move-window-up; }
Mod+Shift+L { move-column-right; }
Mod+D { toggle-window-floating; }
Mod+V { toggle-window-floating; }
Mod+M { fullscreen-window; }
Mod+Equal { set-column-width "+10%"; }
Mod+Minus { set-column-width "-10%"; }
Mod+U { focus-workspace-down; }
Mod+I { focus-workspace-up; }
Mod+Ctrl+U { move-column-to-workspace-down; }
Mod+Ctrl+I { move-column-to-workspace-up; }
Mod+W { toggle-column-tabbed-display; }
${workspaceBinds}
${lib.optionalString config.system.brightnessctl.enable ''
XF86MonBrightnessDown allow-when-locked=true { spawn "${lib.getExe config.system.brightnessctl.package}" "set" "5%-"; }
XF86MonBrightnessUp allow-when-locked=true { spawn "${lib.getExe config.system.brightnessctl.package}" "set" "+5%"; }''}
${lib.optionalString config.media.pamixer.enable ''
XF86AudioLowerVolume allow-when-locked=true { spawn "${lib.getExe config.media.pamixer.package}" "--decrease" "5"; }
XF86AudioRaiseVolume allow-when-locked=true { spawn "${lib.getExe config.media.pamixer.package}" "--increase" "5"; }
XF86AudioMute allow-when-locked=true { spawn "${lib.getExe config.media.pamixer.package}" "--toggle-mute"; }''}
${lib.optionalString config.media.playerctl.enable ''XF86AudioPlay allow-when-locked=true { spawn "${lib.getExe config.media.playerctl.package}" "play-pause"; }''}
${lib.optionalString (config.media.grim.enable && config.media.slurp.enable)
''
Mod+P { spawn-sh "${lib.getExe config.media.grim.package} -g \"$(${lib.getExe config.media.slurp.package})\" - | ${lib.getExe' config.desktop.wl-clipboard.package "wl-copy"}"; }
Mod+Shift+P { spawn-sh "mkdir -p \"$HOME/Pictures/Screenshots\" && ${lib.getExe config.media.grim.package} -g \"$(${lib.getExe config.media.slurp.package})\" \"$HOME/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\""; }''
}
}
'';
}
|