Commit 5321125
Changed files (2)
modules
desktop
shell
modules/desktop/shell/niri/default.nix
@@ -1,5 +1,5 @@
{inputs, ...}: {
- flake.modules.nixos.niri = {pkgs, ...}: {
+ flake.modules.nixos.niri = _: {
imports = [inputs.niri-flake.nixosModules.niri];
niri-flake.cache.enable = false;
@@ -17,10 +17,7 @@
programs.dankMaterialShell = {
enable = true;
- niri = {
- enableKeybinds = true;
- enableSpawn = true;
- };
+ niri = {enableSpawn = true;};
};
};
}
modules/desktop/shell/niri/keybinding.nix
@@ -1,16 +1,60 @@
{
flake.modules.homeManager.niri = {config, ...}: {
- programs.niri.settings.binds = with config.lib.niri.actions; {
+ programs.niri.settings.binds = with config.lib.niri.actions; let
+ dms-ipc = spawn "dms" "ipc";
+ in {
# Mod-Shift-/, which is usually the same as Mod-?,
# shows a list of important hotkeys.
"Mod+Shift+Slash".action = show-hotkey-overlay;
- # Programs hotkey
+ "Mod+Shift+E".action = quit;
+ "Ctrl+Alt+Delete".action = quit;
+
+ "Print".action = screenshot;
+ "Mod+Shift+S".action = screenshot;
+ "Alt+Print".action = screenshot-window;
+
"Mod+Grave".action = spawn "ghostty";
+ # === DankMaterialShell Actions ===
+ # Partially copy from DMS' niri home manager module
+ "Mod+Space" = {
+ action = dms-ipc "spotlight" "toggle";
+ hotkey-overlay.title = "Toggle Application Launcher";
+ };
+ "Super+Alt+L" = {
+ action = dms-ipc "lock" "lock";
+ hotkey-overlay.title = "Toggle Lock Screen";
+ };
+
+ "XF86AudioRaiseVolume" = {
+ allow-when-locked = true;
+ action = dms-ipc "audio" "increment" "3";
+ };
+ "XF86AudioLowerVolume" = {
+ allow-when-locked = true;
+ action = dms-ipc "audio" "decrement" "3";
+ };
+ "XF86AudioMute" = {
+ allow-when-locked = true;
+ action = dms-ipc "audio" "mute";
+ };
+ "XF86AudioMicMute" = {
+ allow-when-locked = true;
+ action = dms-ipc "audio" "micmute";
+ };
+ "XF86MonBrightnessUp" = {
+ allow-when-locked = true;
+ action = dms-ipc "brightness" "increment" "5" "";
+ };
+ "XF86MonBrightnessDown" = {
+ allow-when-locked = true;
+ action = dms-ipc "brightness" "decrement" "5" "";
+ };
+
+ # === Window and Column Actions ===
"Mod+Q".action = close-window;
- # Focus
"Mod+H".action = focus-column-left;
"Mod+J".action = focus-window-down;
"Mod+K".action = focus-window-up;
@@ -21,8 +65,11 @@
"Mod+Right".action = focus-column-right;
"Mod+Home".action = focus-column-first;
"Mod+End".action = focus-column-last;
+ "Mod+WheelScrollRight".action = focus-column-right;
+ "Mod+WheelScrollLeft".action = focus-column-left;
+ "Mod+Shift+WheelScrollDown".action = focus-column-right;
+ "Mod+Shift+WheelScrollUp".action = focus-column-left;
- # Move
"Mod+Ctrl+H".action = move-column-left;
"Mod+Ctrl+J".action = move-window-down;
"Mod+Ctrl+K".action = move-window-up;
@@ -33,13 +80,97 @@
"Mod+Ctrl+Right".action = move-column-right;
"Mod+Ctrl+Home".action = move-column-to-first;
"Mod+Ctrl+End".action = move-column-to-last;
+ "Mod+Ctrl+WheelScrollRight".action = move-column-right;
+ "Mod+Ctrl+WheelScrollLeft".action = move-column-left;
+ "Mod+Ctrl+Shift+WheelScrollDown".action = move-column-right;
+ "Mod+Ctrl+Shift+WheelScrollUp".action = move-column-left;
- # Resize
"Mod+Minus".action = set-column-width "-10%";
"Mod+Equal".action = set-column-width "+10%";
-
"Mod+Shift+Minus".action = set-window-height "-10%";
"Mod+Shift+Equal".action = set-window-height "+10%";
+
+ "Mod+R".action = switch-preset-column-width;
+ "Mod+Shift+R".action = switch-preset-window-height;
+ "Mod+Ctrl+R".action = reset-window-height;
+
+ "Mod+F".action = maximize-column;
+ "Mod+Shift+F".action = fullscreen-window;
+ "Mod+Ctrl+F".action = expand-column-to-available-width;
+
+ "Mod+BracketLeft".action = consume-or-expel-window-left;
+ "Mod+BracketRight".action = consume-or-expel-window-right;
+ "Mod+Comma".action = consume-window-into-column;
+ "Mod+Period".action = expel-window-from-column;
+
+ "Mod+W".action = toggle-window-floating;
+ "Mod+Shift+W".action = switch-focus-between-floating-and-tiling;
+
+ "Mod+T".action = toggle-column-tabbed-display;
+
+ # === Workspace Actions ===
+ "Mod+Page_Down".action = focus-workspace-down;
+ "Mod+Page_Up".action = focus-workspace-up;
+ "Mod+D".action = focus-workspace-down; # Default is `U`, use Helix binding instead.
+ "Mod+U".action = focus-workspace-up; # Default is `I`, use Helix binding instead.
+ "Mod+WheelScrollDown".action = focus-workspace-down;
+ "Mod+WheelScrollDown".cooldown-ms = 150;
+ "Mod+WheelScrollUp".action = focus-workspace-up;
+ "Mod+WheelScrollUp".cooldown-ms = 150;
+
+ "Mod+Ctrl+Page_Down".action = move-column-to-workspace-down;
+ "Mod+Ctrl+Page_Up".action = move-column-to-workspace-up;
+ "Mod+Ctrl+D".action = move-column-to-workspace-down;
+ "Mod+Ctrl+U".action = move-column-to-workspace-up;
+ "Mod+Ctrl+WheelScrollDown".action = move-column-to-workspace-down;
+ "Mod+Ctrl+WheelScrollDown".cooldown-ms = 150;
+ "Mod+Ctrl+WheelScrollUp".action = move-column-to-workspace-up;
+ "Mod+Ctrl+WheelScrollUp".cooldown-ms = 150;
+
+ "Mod+Shift+Page_Down".action = move-workspace-down;
+ "Mod+Shift+Page_Up".action = move-workspace-up;
+ "Mod+Shift+D".action = move-workspace-down;
+ "Mod+Shift+U".action = move-workspace-up;
+
+ "Mod+1".action = focus-workspace 1;
+ "Mod+2".action = focus-workspace 2;
+ "Mod+3".action = focus-workspace 3;
+ "Mod+4".action = focus-workspace 4;
+ "Mod+5".action = focus-workspace 5;
+ "Mod+6".action = focus-workspace 6;
+ "Mod+7".action = focus-workspace 7;
+ "Mod+8".action = focus-workspace 8;
+ "Mod+9".action = focus-workspace 9;
+
+ # TODO: Uncomment below if niri-flake has `move-column-to-workspace`
+ # "Mod+Ctrl+1".action = move-column-to-workspace 1;
+ # "Mod+Ctrl+2".action = move-column-to-workspace 2;
+ # "Mod+Ctrl+3".action = move-column-to-workspace 3;
+ # "Mod+Ctrl+4".action = move-column-to-workspace 4;
+ # "Mod+Ctrl+5".action = move-column-to-workspace 5;
+ # "Mod+Ctrl+6".action = move-column-to-workspace 6;
+ # "Mod+Ctrl+7".action = move-column-to-workspace 7;
+ # "Mod+Ctrl+8".action = move-column-to-workspace 8;
+ # "Mod+Ctrl+9".action = move-column-to-workspace 9;
+
+ # === Monitor Actions ===
+ "Mod+Shift+Left".action = focus-monitor-left;
+ "Mod+Shift+Down".action = focus-monitor-down;
+ "Mod+Shift+Up".action = focus-monitor-up;
+ "Mod+Shift+Right".action = focus-monitor-right;
+ "Mod+Shift+H".action = focus-monitor-left;
+ "Mod+Shift+J".action = focus-monitor-down;
+ "Mod+Shift+K".action = focus-monitor-up;
+ "Mod+Shift+L".action = focus-monitor-right;
+
+ "Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left;
+ "Mod+Shift+Ctrl+Down".action = move-column-to-monitor-down;
+ "Mod+Shift+Ctrl+Up".action = move-column-to-monitor-up;
+ "Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right;
+ "Mod+Shift+Ctrl+H".action = move-column-to-monitor-left;
+ "Mod+Shift+Ctrl+J".action = move-column-to-monitor-down;
+ "Mod+Shift+Ctrl+K".action = move-column-to-monitor-up;
+ "Mod+Shift+Ctrl+L".action = move-column-to-monitor-right;
};
};
}