summaryrefslogtreecommitdiff
path: root/hm/env/niri/binds.nix
diff options
context:
space:
mode:
authoradikro <adikro@disroot.org>2026-03-01 19:57:16 +0100
committeradikro <adikro@disroot.org>2026-03-01 19:57:16 +0100
commit1be09af058424219de2aad4b9cc27ccf760d23f6 (patch)
treebdc1177b166e1eef36763984b6862d7755a7bde8 /hm/env/niri/binds.nix
parent4b41ce640c5eddcb50904331e03aac5460caa144 (diff)
...
Diffstat (limited to 'hm/env/niri/binds.nix')
-rw-r--r--hm/env/niri/binds.nix168
1 files changed, 76 insertions, 92 deletions
diff --git a/hm/env/niri/binds.nix b/hm/env/niri/binds.nix
index e85b867..0dc4ea5 100644
--- a/hm/env/niri/binds.nix
+++ b/hm/env/niri/binds.nix
@@ -2,92 +2,111 @@
config,
lib,
pkgs,
+ osConfig,
...
}:
with config.lib.niri.actions;
let
playerctl = spawn "${pkgs.playerctl}/bin/playerctl";
- ss = "${toString config.hm.conf.xdg-dirs.storagePath}/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)";
+ ssPath = "${toString config.hm.conf.xdg-dirs.storagePath}/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)";
+ obsPass = osConfig.sops.secrets."obs/websocket_password".path;
in
{
+ # --- System & Media ---
+ "Mod+Shift+E".action = quit;
+ "Mod+Slash".action = show-hotkey-overlay;
+
+ # Audio (System-wide via wireplumber)
+ XF86AudioRaiseVolume.action = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "3%+";
+ XF86AudioLowerVolume.action = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "3%-";
+ XF86AudioMute.action =
+ spawn "sh" "-c"
+ "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
+ XF86Tools.action =
+ spawn "sh" "-c"
+ "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
+
+ # Media Control
+ XF86AudioPlay.action = playerctl "play-pause";
+ XF86AudioPrev.action = playerctl "previous";
+ XF86AudioNext.action = playerctl "next";
+
+ # Brightness
+ XF86MonBrightnessUp.action = spawn "light" "-A" "10";
+ XF86MonBrightnessDown.action = spawn "light" "-U" "10";
+
+ # --- Applications ---
+ "Mod+Return".action = spawn "foot";
+ "Mod+D".action = spawn "fuzzel";
+ "Mod+C".action = spawn "qalculate-gtk";
+ "Mod+Shift+D".action = spawn "sh" "-c" "cliphist list | fuzzel --dmenu | cliphist decode | wl-copy";
+ "Super+Return".action = spawn "sh" "-c" "OBS_WEBSOCKET_URL=$(cat ${obsPass}) obs-cmd replay save";
+
+ # --- Navigation: Columns & Workspaces ---
+ "Mod+H".action = focus-column-left;
+ "Mod+L".action = focus-column-right;
+ "Mod+J".action = focus-workspace-down;
+ "Mod+K".action = focus-workspace-up;
+
+ "Mod+WheelScrollDown".action = focus-column-right;
+ "Mod+WheelScrollUp".action = focus-column-left;
+ "Super+WheelScrollDown".action = focus-workspace-down;
+ "Super+WheelScrollUp".action = focus-workspace-up;
+
+ # --- Navigation: Monitors ---
+ "Super+H".action = focus-monitor-left;
+ "Super+L".action = focus-monitor-right;
+
+ # --- Window Management ---
+ "Mod+Shift+Q".action = close-window;
+ "Mod+Shift+V".action = toggle-window-floating;
"Mod+O" = {
action = toggle-overview;
repeat = false;
};
- "Mod+Slash".action = show-hotkey-overlay;
- XF86AudioRaiseVolume.action = playerctl "volume" "0.03+";
- XF86AudioLowerVolume.action = playerctl "volume" "0.03-";
- XF86AudioMute.action = spawn "sh" "-c" ''
- wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && \
- wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
- '';
- XF86Tools.action = spawn "sh" "-c" ''
- wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && \
- wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
- '';
+ # Moving Windows/Columns
+ "Mod+Shift+H".action = move-column-left;
+ "Mod+Shift+L".action = move-column-right;
+ "Mod+Shift+J".action = move-window-down-or-to-workspace-down;
+ "Mod+Shift+K".action = move-window-up-or-to-workspace-up;
+ "Super+Shift+H".action = move-column-to-monitor-left;
+ "Super+Shift+L".action = move-column-to-monitor-right;
- "Mod+WheelScrollDown".action = focus-column-right;
- "Mod+WheelScrollUp".action = focus-column-left;
"Mod+Shift+WheelScrollDown".action = move-column-right;
"Mod+Shift+WheelScrollUp".action = move-column-left;
-
- "Super+WheelScrollDown".action = focus-workspace-down;
- "Super+WheelScrollUp".action = focus-workspace-up;
"Super+Shift+WheelScrollDown".action = move-window-down-or-to-workspace-down;
"Super+Shift+WheelScrollUp".action = move-window-up-or-to-workspace-up;
+ # Container Management (Consume/Expel)
+ "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;
+
XF86Launch5.action = consume-or-expel-window-right;
XF86Launch6.action = consume-or-expel-window-left;
- XF86Launch7.action = switch-preset-column-width;
- "Super+Shift+L".action = spawn "swaylock" "-f";
- XF86AudioPlay.action = playerctl "play-pause";
- XF86AudioPrev.action = playerctl "previous";
- XF86AudioNext.action = playerctl "next";
+ # --- Layout & Sizing ---
+ "Mod+F".action = maximize-column;
+ "Mod+Shift+F".action = fullscreen-window;
+ "Mod+W".action = toggle-column-tabbed-display;
+ "Mod+R".action = switch-preset-column-width;
+ XF86Launch7.action = switch-preset-column-width;
+ "Mod+Shift+R".action = reset-window-height;
"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+Shift+V".action = toggle-window-floating;
- "Mod+W".action = toggle-column-tabbed-display;
-
- "Mod+XF86Launch7" = {
- action = spawn "sh" "-c" ''
- wayfreeze &
- sleep 0.1
- GEOM=$(slurp)
- if [ -n "$GEOM" ]; then
- grim -g "$GEOM" - | tee ${ss}.png | wl-copy
- fi
- pkill -n wayfreeze
- '';
- repeat = false;
- };
-
- "Mod+Shift+XF86Launch7" = {
- action = spawn "sh" "-c" ''
- wayfreeze &
- sleep 0.1
- GEOM=$(slurp)
- if [ -n "$GEOM" ]; then
- grim -g "$GEOM" -t ppm - | satty --filename - --output-filename "${ss}-edited.png"
- fi
- pkill -n wayfreeze
- '';
- repeat = false;
- };
-
+ # --- Screenshots ---
"Mod+S" = {
action = spawn "sh" "-c" ''
- wayfreeze &
- sleep 0.1
+ wayfreeze & sleep 0.1
GEOM=$(slurp)
if [ -n "$GEOM" ]; then
- grim -g "$GEOM" - | tee ${ss}.png | wl-copy
+ grim -g "$GEOM" - | tee ${ssPath}.png | wl-copy
fi
pkill -n wayfreeze
'';
@@ -96,50 +115,15 @@ in
"Mod+Shift+S" = {
action = spawn "sh" "-c" ''
- wayfreeze &
- sleep 0.1
+ wayfreeze & sleep 0.1
GEOM=$(slurp)
if [ -n "$GEOM" ]; then
- grim -g "$GEOM" -t ppm - | satty --filename - --output-filename "${ss}-edited.png"
+ grim -g "$GEOM" -t ppm - | satty --filename - --output-filename "${ssPath}-edited.png"
fi
pkill -n wayfreeze
'';
repeat = false;
};
-
- "Mod+Shift+D".action = spawn "sh" "-c" ''
- cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
- '';
-
- "Mod+Return".action = spawn "foot";
- "Mod+D".action = spawn "fuzzel";
- "Mod+C".action = spawn "qalculate-gtk";
- "Mod+BracketLeft".action = consume-or-expel-window-left;
- "Mod+BracketRight".action = consume-or-expel-window-right;
-
- "Mod+R".action = switch-preset-column-width;
- "Mod+Shift+R".action = reset-window-height;
- "Mod+F".action = maximize-column;
- "Mod+Shift+F".action = fullscreen-window;
-
- "Mod+Comma".action = consume-window-into-column;
- "Mod+Period".action = expel-window-from-column;
-
- "Mod+Shift+E".action = quit;
-
- "Mod+H".action = focus-column-left;
- "Mod+L".action = focus-column-right;
- "Mod+J".action = focus-workspace-down;
- "Mod+K".action = focus-workspace-up;
-
- "Mod+Shift+H".action = move-column-left;
- "Mod+Shift+L".action = move-column-right;
- "Mod+Shift+J".action = move-window-down-or-to-workspace-down;
- "Mod+Shift+K".action = move-window-up-or-to-workspace-up;
-
- "Mod+Shift+Q".action = close-window;
-
- "Super+Return".action = spawn "obs-cmd" "replay" "save";
}
// (builtins.listToAttrs (
builtins.concatMap (