summaryrefslogtreecommitdiff
path: root/home/wayland/niri
diff options
context:
space:
mode:
Diffstat (limited to 'home/wayland/niri')
-rw-r--r--home/wayland/niri/binds.nix70
-rw-r--r--home/wayland/niri/niri.nix3
2 files changed, 46 insertions, 27 deletions
diff --git a/home/wayland/niri/binds.nix b/home/wayland/niri/binds.nix
index e65a595..0277e50 100644
--- a/home/wayland/niri/binds.nix
+++ b/home/wayland/niri/binds.nix
@@ -1,40 +1,57 @@
{ config, pkgs, ... }:
+
+let
+ # helpers
+ actions = config.lib.niri.actions;
+ spawn = actions.spawn;
+
+ # common action factories
+ set-volume = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@";
+ playerctl = spawn "${pkgs.playerctl}/bin/playerctl";
+in
{
- programs.niri.settings.binds = with config.lib.niri.actions;
- let
- set-volume = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@";
- playerctl = spawn "${pkgs.playerctl}/bin/playerctl";
- in
- {
+ programs.niri.settings.binds = with actions; {
+
+ # Overview / help
"Mod+O" = {
action = toggle-overview;
repeat = false;
};
"Mod+Slash".action = show-hotkey-overlay;
+
+ # Audio
XF86AudioRaiseVolume.action = set-volume "2%+";
XF86AudioLowerVolume.action = set-volume "2%-";
XF86AudioMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
XF86AudioMicMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
+
+ # Media keys
XF86AudioPlay.action = playerctl "play-pause";
XF86AudioStop.action = playerctl "pause";
XF86AudioPrev.action = playerctl "previous";
XF86AudioNext.action = playerctl "next";
+
+ # Column sizing
"Mod+Minus".action = set-column-width "-10%";
"Mod+Equal".action = set-column-width "+10%";
- # // Finer height adjustments when in column with other windows.
+ # Finer height adjustments when in column with other windows.
"Mod+Shift+Minus".action = set-window-height "-10%";
"Mod+Shift+Equal".action = set-window-height "+10%";
+
+ # Misc
# "Mod+Shift+V".action = switch-focus-between-floating-and-tiling;
"Mod+Shift+P".action = power-off-monitors;
- "Mod+W".action = toggle-column-tabbed-display;
+ "Mod+W".action = toggle-column-tabbed-display;
+ # Screenshot (selection -> copy + save)
"Mod+S".action = spawn "sh" "-c"
''
filename="/media/ss/$(date +%Y-%m-%d_%H-%M-%S).png"
grim -g "$(slurp)" - | tee "$filename" | wl-copy
'';
+ # Screenshot (selection -> save -> edit with satty -> copy edited)
"Mod+Shift+S".action = spawn "sh" "-c"
''
filename="/media/ss/$(date +%Y-%m-%d_%H-%M-%S).png"
@@ -42,25 +59,29 @@
edited="/media/ss/$(date +%Y-%m-%d_%H-%M-%S)-edited.png"
satty --filename "$filename" --output-filename "$edited"
- wl-copy < "$edited"
+ '';
+
+ "Mod+Shift+D".action = spawn "sh" "-c"
+ ''
+ cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
'';
# --- System / General ---
"Mod+Return".action = spawn "foot";
"Mod+D".action = spawn "fuzzel";
- "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+C".action = center-column;
-
- "Mod+Comma".action = consume-window-into-column;
- "Mod+Period".action = expel-window-from-column;
- # The 'quit' action without arguments performs the action with confirmation.
- "Mod+Shift+E".action = quit;
+ "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+C".action = center-column;
+
+ "Mod+Comma".action = consume-window-into-column;
+ "Mod+Period".action = expel-window-from-column;
+
+ "Mod+Shift+E".action = quit;
# --- Window Navigation (Focus) ---
"Mod+H".action = focus-column-left;
@@ -76,8 +97,6 @@
# --- Window State ---
"Mod+Shift+Q".action = close-window;
- # "Mod+F".action = maximize-column;
- # "Mod+V".action = toggle-window-floating; # Renamed from toggle-floating to match docs};
"Mod+1".action = focus-workspace 1;
"Mod+2".action = focus-workspace 2;
@@ -86,12 +105,11 @@
"Mod+5".action = focus-workspace 5;
"Mod+6".action = focus-workspace 6;
- # The wonky format used here is to work-around https://github.com/sodiboo/niri-flake/issues/944
"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 ];
- };
+ };
}
diff --git a/home/wayland/niri/niri.nix b/home/wayland/niri/niri.nix
index 9a3d85e..7d0537a 100644
--- a/home/wayland/niri/niri.nix
+++ b/home/wayland/niri/niri.nix
@@ -68,7 +68,8 @@
};
spawn-at-startup = [
{ command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; }
- { command = [ "swaybg" "--image" "/media/pics/wallpapers/kita6.png" ]; }
+ { command = [ "awww-daemon" ]; }
+ { command = [ "wl-paste --watch cliphist store" ]; }
];
};
}