diff options
| author | adikro <adikro@disroot.org> | 2026-03-01 19:57:16 +0100 |
|---|---|---|
| committer | adikro <adikro@disroot.org> | 2026-03-01 19:57:16 +0100 |
| commit | 1be09af058424219de2aad4b9cc27ccf760d23f6 (patch) | |
| tree | bdc1177b166e1eef36763984b6862d7755a7bde8 /hm/env | |
| parent | 4b41ce640c5eddcb50904331e03aac5460caa144 (diff) | |
...
Diffstat (limited to 'hm/env')
| -rw-r--r-- | hm/env/niri/binds.nix | 168 | ||||
| -rw-r--r-- | hm/env/niri/niri.nix | 51 |
2 files changed, 104 insertions, 115 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 ( diff --git a/hm/env/niri/niri.nix b/hm/env/niri/niri.nix index 3f66f6e..f8e1542 100644 --- a/hm/env/niri/niri.nix +++ b/hm/env/niri/niri.nix @@ -2,10 +2,13 @@ config, lib, pkgs, + osConfig, ... -}: let +}: +let cfg = config.hm.env.niri; -in { +in +{ options.hm.env.niri.enable = lib.mkEnableOption "niri hm"; config = lib.mkIf cfg.enable { hm.env = { @@ -17,8 +20,15 @@ in { }; programs.niri.settings = { - debug.disable-cursor-plane = []; - binds = import ./binds.nix {inherit config lib pkgs;}; + debug.disable-cursor-plane = [ ]; + binds = import ./binds.nix { + inherit + config + osConfig + lib + pkgs + ; + }; prefer-no-csd = true; hotkey-overlay.skip-at-startup = true; @@ -41,17 +51,6 @@ in { }; power-key-handling.enable = false; }; - outputs = { - "DP-1" = { - focus-at-startup = true; - # backdrop-color = ""; - variable-refresh-rate = "on-demand"; - mode = { - width = 2560; - height = 1440; - }; - }; - }; cursor = { hide-when-typing = true; size = 48; @@ -67,14 +66,14 @@ in { # active = <decoration>; }; preset-column-widths = [ - {proportion = 1. / 3.;} - {proportion = 1. / 2.;} - {proportion = 2. / 3.;} + { proportion = 1. / 3.; } + { proportion = 1. / 2.; } + { proportion = 2. / 3.; } ]; preset-window-heights = [ - {proportion = 1. / 3.;} - {proportion = 1. / 2.;} - {proportion = 2. / 3.;} + { proportion = 1. / 3.; } + { proportion = 1. / 2.; } + { proportion = 2. / 3.; } ]; default-column-width.proportion = 0.5; tab-indicator = { @@ -85,14 +84,20 @@ in { window-rules = [ { matches = [ - {app-id = "Bitwarden";} + { app-id = "Bitwarden"; } ]; block-out-from = "screen-capture"; } ]; gestures.hot-corners.enable = false; spawn-at-startup = [ - {command = ["obs" "--disable-missing-files-check" "--startreplaybuffer"];} + { + command = [ + "obs" + "--disable-missing-files-check" + "--startreplaybuffer" + ]; + } ]; }; home.packages = with pkgs; [ |
