From 7f98200cd82909a384e618365d30f6f400ad41d2 Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Sun, 6 Oct 2024 12:15:21 +0200 Subject: [PATCH] home/programs/niri: separate binds from config --- home/programs/niri/binds.nix | 146 +++++++++++++++++++++++++++++++++ home/programs/niri/default.nix | 146 ++------------------------------- 2 files changed, 151 insertions(+), 141 deletions(-) create mode 100644 home/programs/niri/binds.nix diff --git a/home/programs/niri/binds.nix b/home/programs/niri/binds.nix new file mode 100644 index 0000000..eaa78ba --- /dev/null +++ b/home/programs/niri/binds.nix @@ -0,0 +1,146 @@ +{config, ...}: let + appLauncher = "fuzzel"; + terminal = "foot"; + screenLocker = "swaylock"; +in { + programs.niri.settings.binds = { + "Mod+D".action.spawn = appLauncher; + "Mod+Return".action.spawn = terminal; + "Mod+Shift+E".action.quit.skip-confirmation = true; + "Mod+Shift+Slash".action = config.lib.niri.actions.show-hotkey-overlay; + "Mod+Q".action = config.lib.niri.actions.close-window; + "Mod+F".action = config.lib.niri.actions.maximize-column; + "Mod+Shift+F".action = config.lib.niri.actions.fullscreen-window; + "Mod+C".action = config.lib.niri.actions.center-column; + + # Focus + "Mod+Left".action = config.lib.niri.actions.focus-column-left; + "Mod+Down".action = config.lib.niri.actions.focus-window-down; + "Mod+Up".action = config.lib.niri.actions.focus-window-up; + "Mod+Right".action = config.lib.niri.actions.focus-column-right; + "Mod+H".action = config.lib.niri.actions.focus-column-left; + "Mod+J".action = config.lib.niri.actions.focus-window-down; + "Mod+K".action = config.lib.niri.actions.focus-window-up; + "Mod+L".action = config.lib.niri.actions.focus-column-right; + "Mod+Home".action = config.lib.niri.actions.focus-column-first; + "Mod+End".action = config.lib.niri.actions.focus-column-last; + + # Move + "Mod+Ctrl+Left".action = config.lib.niri.actions.move-column-left; + "Mod+Ctrl+Down".action = config.lib.niri.actions.move-window-down; + "Mod+Ctrl+Up".action = config.lib.niri.actions.move-window-up; + "Mod+Ctrl+Right".action = config.lib.niri.actions.move-column-right; + "Mod+Ctrl+H".action = config.lib.niri.actions.move-column-left; + "Mod+Ctrl+J".action = config.lib.niri.actions.move-window-down; + "Mod+Ctrl+K".action = config.lib.niri.actions.move-window-up; + "Mod+Ctrl+L".action = config.lib.niri.actions.move-column-right; + "Mod+Ctrl+Home".action = config.lib.niri.actions.move-column-to-first; + "Mod+Ctrl+End".action = config.lib.niri.actions.move-column-to-last; + + # Monitor focus + "Mod+Shift+Left".action = config.lib.niri.actions.focus-monitor-left; + "Mod+Shift+Down".action = config.lib.niri.actions.focus-monitor-down; + "Mod+Shift+Up".action = config.lib.niri.actions.focus-monitor-up; + "Mod+Shift+Right".action = config.lib.niri.actions.focus-monitor-right; + "Mod+Shift+H".action = config.lib.niri.actions.focus-monitor-left; + "Mod+Shift+J".action = config.lib.niri.actions.focus-monitor-down; + "Mod+Shift+K".action = config.lib.niri.actions.focus-monitor-up; + "Mod+Shift+L".action = config.lib.niri.actions.focus-monitor-right; + + # Move to monitor + "Mod+Shift+Ctrl+Left".action = config.lib.niri.actions.move-column-to-monitor-left; + "Mod+Shift+Ctrl+Down".action = config.lib.niri.actions.move-column-to-monitor-down; + "Mod+Shift+Ctrl+Up".action = config.lib.niri.actions.move-column-to-monitor-up; + "Mod+Shift+Ctrl+Right".action = config.lib.niri.actions.move-column-to-monitor-right; + "Mod+Shift+Ctrl+H".action = config.lib.niri.actions.move-column-to-monitor-left; + "Mod+Shift+Ctrl+J".action = config.lib.niri.actions.move-column-to-monitor-down; + "Mod+Shift+Ctrl+K".action = config.lib.niri.actions.move-column-to-monitor-up; + "Mod+Shift+Ctrl+L".action = config.lib.niri.actions.move-column-to-monitor-right; + + # Workspace navigation + "Mod+Page_Down".action = config.lib.niri.actions.focus-workspace-down; + "Mod+Page_Up".action = config.lib.niri.actions.focus-workspace-up; + "Mod+U".action = config.lib.niri.actions.focus-workspace-down; + "Mod+I".action = config.lib.niri.actions.focus-workspace-up; + "Mod+Ctrl+Page_Down".action = config.lib.niri.actions.move-column-to-workspace-down; + "Mod+Ctrl+Page_Up".action = config.lib.niri.actions.move-column-to-workspace-up; + "Mod+Ctrl+U".action = config.lib.niri.actions.move-column-to-workspace-down; + "Mod+Ctrl+I".action = config.lib.niri.actions.move-column-to-workspace-up; + "Mod+Shift+Page_Down".action = config.lib.niri.actions.move-workspace-down; + "Mod+Shift+Page_Up".action = config.lib.niri.actions.move-workspace-up; + "Mod+Shift+U".action = config.lib.niri.actions.move-workspace-down; + + # Workspace focus + "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; + + # Move 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; + "Mod+Shift+I".action = config.lib.niri.actions.move-workspace-up; + + # Window management + "Mod+Comma".action = config.lib.niri.actions.consume-window-into-column; + "Mod+Period".action = config.lib.niri.actions.expel-window-from-column; + "Mod+BracketLeft".action = config.lib.niri.actions.consume-or-expel-window-left; + "Mod+BracketRight".action = config.lib.niri.actions.consume-or-expel-window-right; + + # Column management + "Mod+R".action = config.lib.niri.actions.switch-preset-column-width; + "Mod+Shift+R".action = config.lib.niri.actions.switch-preset-window-height; + "Mod+Ctrl+R".action = config.lib.niri.actions.reset-window-height; + "Mod+Minus".action = config.lib.niri.actions.set-column-width "-10%"; + "Mod+Equal".action = config.lib.niri.actions.set-column-width "+10%"; + "Mod+Shift+Minus".action = config.lib.niri.actions.set-window-height "-10%"; + "Mod+Shift+Equal".action = config.lib.niri.actions.set-window-height "+10%"; + + # Screenshots + "Print".action = config.lib.niri.actions.screenshot; + "Ctrl+Print".action = config.lib.niri.actions.screenshot-screen; + "Alt+Print".action = config.lib.niri.actions.screenshot-window; + + # System + "Mod+Shift+P".action = config.lib.niri.actions.power-off-monitors; + "Mod+Alt+L".action.spawn = screenLocker; + + # Media keys + "XF86AudioRaiseVolume" = { + action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"]; + allow-when-locked = true; + }; + "XF86AudioLowerVolume" = { + action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"]; + allow-when-locked = true; + }; + "XF86AudioMute" = { + action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"]; + allow-when-locked = true; + }; + "XF86AudioMicMute" = { + action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"]; + allow-when-locked = true; + }; + "XF86MonBrightnessUp" = { + action.spawn = ["brillo" "-q" "-u 300000" "-A 5"]; + allow-when-locked = true; + }; + "XF86MonBrightnessDown" = { + action.spawn = ["brillo" "-q" "-u 300000" "-U 5"]; + allow-when-locked = true; + }; + }; +} diff --git a/home/programs/niri/default.nix b/home/programs/niri/default.nix index 5c60181..7505d8f 100644 --- a/home/programs/niri/default.nix +++ b/home/programs/niri/default.nix @@ -1,13 +1,12 @@ { + inputs, config, - lib, pkgs, ... }: let - appLauncher = lib.getExe pkgs.fuzzel; - terminal = lib.getExe pkgs.foot; - # schemeData = inputs.basix.schemeData.base16.${config.theme.scheme}; + schemeData = inputs.basix.schemeData.base16.${config.theme.scheme}; in { + imports = [./binds.nix]; programs.niri = { settings = { environment."NIXOS_OZONE_WL" = "1"; @@ -21,144 +20,9 @@ in { default-column-width = {proportion = 0.5;}; } ]; - binds = { - "Mod+D".action.spawn = appLauncher; - "Mod+Return".action.spawn = terminal; - "Mod+Shift+E".action.quit.skip-confirmation = true; - "Mod+Shift+Slash".action = config.lib.niri.actions.show-hotkey-overlay; - "Mod+Q".action = config.lib.niri.actions.close-window; - "Mod+F".action = config.lib.niri.actions.maximize-column; - "Mod+Shift+F".action = config.lib.niri.actions.fullscreen-window; - "Mod+C".action = config.lib.niri.actions.center-column; - # Focus - "Mod+Left".action = config.lib.niri.actions.focus-column-left; - "Mod+Down".action = config.lib.niri.actions.focus-window-down; - "Mod+Up".action = config.lib.niri.actions.focus-window-up; - "Mod+Right".action = config.lib.niri.actions.focus-column-right; - "Mod+H".action = config.lib.niri.actions.focus-column-left; - "Mod+J".action = config.lib.niri.actions.focus-window-down; - "Mod+K".action = config.lib.niri.actions.focus-window-up; - "Mod+L".action = config.lib.niri.actions.focus-column-right; - "Mod+Home".action = config.lib.niri.actions.focus-column-first; - "Mod+End".action = config.lib.niri.actions.focus-column-last; - - # Move - "Mod+Ctrl+Left".action = config.lib.niri.actions.move-column-left; - "Mod+Ctrl+Down".action = config.lib.niri.actions.move-window-down; - "Mod+Ctrl+Up".action = config.lib.niri.actions.move-window-up; - "Mod+Ctrl+Right".action = config.lib.niri.actions.move-column-right; - "Mod+Ctrl+H".action = config.lib.niri.actions.move-column-left; - "Mod+Ctrl+J".action = config.lib.niri.actions.move-window-down; - "Mod+Ctrl+K".action = config.lib.niri.actions.move-window-up; - "Mod+Ctrl+L".action = config.lib.niri.actions.move-column-right; - "Mod+Ctrl+Home".action = config.lib.niri.actions.move-column-to-first; - "Mod+Ctrl+End".action = config.lib.niri.actions.move-column-to-last; - - # Monitor focus - "Mod+Shift+Left".action = config.lib.niri.actions.focus-monitor-left; - "Mod+Shift+Down".action = config.lib.niri.actions.focus-monitor-down; - "Mod+Shift+Up".action = config.lib.niri.actions.focus-monitor-up; - "Mod+Shift+Right".action = config.lib.niri.actions.focus-monitor-right; - "Mod+Shift+H".action = config.lib.niri.actions.focus-monitor-left; - "Mod+Shift+J".action = config.lib.niri.actions.focus-monitor-down; - "Mod+Shift+K".action = config.lib.niri.actions.focus-monitor-up; - "Mod+Shift+L".action = config.lib.niri.actions.focus-monitor-right; - - # Move to monitor - "Mod+Shift+Ctrl+Left".action = config.lib.niri.actions.move-column-to-monitor-left; - "Mod+Shift+Ctrl+Down".action = config.lib.niri.actions.move-column-to-monitor-down; - "Mod+Shift+Ctrl+Up".action = config.lib.niri.actions.move-column-to-monitor-up; - "Mod+Shift+Ctrl+Right".action = config.lib.niri.actions.move-column-to-monitor-right; - "Mod+Shift+Ctrl+H".action = config.lib.niri.actions.move-column-to-monitor-left; - "Mod+Shift+Ctrl+J".action = config.lib.niri.actions.move-column-to-monitor-down; - "Mod+Shift+Ctrl+K".action = config.lib.niri.actions.move-column-to-monitor-up; - "Mod+Shift+Ctrl+L".action = config.lib.niri.actions.move-column-to-monitor-right; - - # Workspace navigation - "Mod+Page_Down".action = config.lib.niri.actions.focus-workspace-down; - "Mod+Page_Up".action = config.lib.niri.actions.focus-workspace-up; - "Mod+U".action = config.lib.niri.actions.focus-workspace-down; - "Mod+I".action = config.lib.niri.actions.focus-workspace-up; - "Mod+Ctrl+Page_Down".action = config.lib.niri.actions.move-column-to-workspace-down; - "Mod+Ctrl+Page_Up".action = config.lib.niri.actions.move-column-to-workspace-up; - "Mod+Ctrl+U".action = config.lib.niri.actions.move-column-to-workspace-down; - "Mod+Ctrl+I".action = config.lib.niri.actions.move-column-to-workspace-up; - "Mod+Shift+Page_Down".action = config.lib.niri.actions.move-workspace-down; - "Mod+Shift+Page_Up".action = config.lib.niri.actions.move-workspace-up; - "Mod+Shift+U".action = config.lib.niri.actions.move-workspace-down; - - # Workspace focus - "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; - - # Move 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; - "Mod+Shift+I".action = config.lib.niri.actions.move-workspace-up; - - # Window management - "Mod+Comma".action = config.lib.niri.actions.consume-window-into-column; - "Mod+Period".action = config.lib.niri.actions.expel-window-from-column; - "Mod+BracketLeft".action = config.lib.niri.actions.consume-or-expel-window-left; - "Mod+BracketRight".action = config.lib.niri.actions.consume-or-expel-window-right; - - # Column management - "Mod+R".action = config.lib.niri.actions.switch-preset-column-width; - "Mod+Shift+R".action = config.lib.niri.actions.switch-preset-window-height; - "Mod+Ctrl+R".action = config.lib.niri.actions.reset-window-height; - "Mod+Minus".action = config.lib.niri.actions.set-column-width "-10%"; - "Mod+Equal".action = config.lib.niri.actions.set-column-width "+10%"; - "Mod+Shift+Minus".action = config.lib.niri.actions.set-window-height "-10%"; - "Mod+Shift+Equal".action = config.lib.niri.actions.set-window-height "+10%"; - - # Screenshots - "Print".action = config.lib.niri.actions.screenshot; - "Ctrl+Print".action = config.lib.niri.actions.screenshot-screen; - "Alt+Print".action = config.lib.niri.actions.screenshot-window; - - # System - "Mod+Shift+P".action = config.lib.niri.actions.power-off-monitors; - - # Media keys - "XF86AudioRaiseVolume" = { - action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"]; - allow-when-locked = true; - }; - "XF86AudioLowerVolume" = { - action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"]; - allow-when-locked = true; - }; - "XF86AudioMute" = { - action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"]; - allow-when-locked = true; - }; - "XF86AudioMicMute" = { - action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"]; - allow-when-locked = true; - }; - "XF86MonBrightnessUp" = { - action.spawn = ["brillo" "-q" "-u 300000" "-A 5"]; - allow-when-locked = true; - }; - "XF86MonBrightnessDown" = { - action.spawn = ["brillo" "-q" "-u 300000" "-U 5"]; - allow-when-locked = true; - }; + layout = { + border.active = pkgs.lib.rgba schemeData.palette.base0E; }; }; };