aboutsummaryrefslogtreecommitdiff
path: root/home/programs/desktop/niri.nix
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--home/programs/desktop/niri.nix329
1 files changed, 329 insertions, 0 deletions
diff --git a/home/programs/desktop/niri.nix b/home/programs/desktop/niri.nix
new file mode 100644
index 0000000..459980d
--- /dev/null
+++ b/home/programs/desktop/niri.nix
@@ -0,0 +1,329 @@
+{
+ config,
+ inputs,
+ pkgs,
+ ...
+}:
+let
+ xcursor_theme = config.gtk.cursorTheme.name;
+ noctalia = inputs.noctalia.packages.${pkgs.system}.default;
+ noctaliaIPC = "${noctalia}/bin/noctalia-shell ipc call";
+in
+{
+ services.swayidle = {
+ enable = true;
+ timeouts = [
+ {
+ timeout = 180;
+ command = "${pkgs.niri}/bin/niri msg action power-off-monitors";
+ }
+ ];
+ };
+
+ programs.niri.enable = true;
+
+ home.packages = with pkgs; [
+ fuzzel
+ light
+ pamixer
+ ];
+
+ programs.niri.settings = {
+ input = {
+ keyboard = {
+ xkb = {
+ layout = "us";
+ model = "pc105";
+ options = "ctrl:nocaps";
+ };
+ repeat-delay = 300;
+ repeat-rate = 20;
+ };
+ touchpad = {
+ tap = true;
+ dwt = true;
+ natural-scroll = true;
+ };
+ focus-follows-mouse.enable = true;
+ focus-follows-mouse.max-scroll-amount = "0%";
+ workspace-auto-back-and-forth = true;
+ };
+
+ spawn-at-startup = [
+ { sh = "${noctalia}/bin/noctalia-init"; }
+ ];
+
+ hotkey-overlay.skip-at-startup = true;
+
+ cursor = {
+ theme = xcursor_theme;
+ };
+
+ layout = {
+ gaps = 16;
+ center-focused-column = "never";
+ preset-column-widths = [
+ { proportion = 1.0 / 3.0; }
+ { proportion = 1.0 / 2.0; }
+ { proportion = 2.0 / 3.0; }
+ ];
+ default-column-width = {
+ proportion = 0.5;
+ };
+
+ tab-indicator = {
+ gap = 8;
+ gaps-between-tabs = 4;
+ corner-radius = 8;
+ width = 10;
+ position = "top";
+ };
+
+ focus-ring = {
+ width = 4;
+
+ active = {
+ color = "#7fc8ff";
+ };
+
+ inactive = {
+ color = "#505050";
+ };
+ };
+
+ border = {
+ enable = false;
+ };
+
+ shadow = {
+ enable = true;
+ softness = 30;
+ spread = 5;
+ offset = {
+ x = 0;
+ y = 5;
+ };
+ color = "#0007";
+ };
+
+ struts = {
+ left = 8;
+ right = 8;
+ top = 8;
+ bottom = 8;
+ };
+ };
+
+ screenshot-path = "~/.screenshots/%Y-%m-%dT%H.%M.%S.png";
+
+ window-rules = [
+ {
+ geometry-corner-radius = {
+ top-left = 12.0;
+ top-right = 12.0;
+ bottom-left = 12.0;
+ bottom-right = 12.0;
+ };
+ clip-to-geometry = true;
+ }
+
+ {
+ matches = [
+ {
+ app-id = "mpv$";
+ }
+ ];
+ open-floating = true;
+ }
+ ];
+
+ binds = {
+ "Mod+Shift+Slash".action.show-hotkey-overlay = [ ];
+ "Super+Return".action.spawn = [
+ "kitty"
+ ];
+ "Mod+D".action.spawn-sh = "${noctaliaIPC} launcher toggle";
+ "Super+Alt+L".action.spawn-sh = "${noctaliaIPC} lockScreen lock";
+ "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;
+ };
+
+ "Mod+Tab".action.toggle-overview = [ ];
+
+ "Mod+Q".action.close-window = [ ];
+
+ "Mod+Left".action.focus-column-left = [ ];
+ "Mod+Down".action.focus-window-or-workspace-down = [ ];
+ "Mod+Up".action.focus-window-or-workspace-up = [ ];
+ "Mod+Right".action.focus-column-right = [ ];
+ "Mod+H".action.focus-column-left = [ ];
+ "Mod+J".action.focus-window-down = [ ];
+ "Mod+K".action.focus-window-up = [ ];
+ "Mod+L".action.focus-column-right = [ ];
+
+ "Mod+Ctrl+Left".action.move-column-left = [ ];
+ "Mod+Ctrl+Down".action.move-window-down = [ ];
+ "Mod+Ctrl+Up".action.move-window-up = [ ];
+ "Mod+Ctrl+Right".action.move-column-right = [ ];
+ "Mod+Ctrl+H".action.move-column-left = [ ];
+ "Mod+Ctrl+J".action.move-window-down = [ ];
+ "Mod+Ctrl+K".action.move-window-up = [ ];
+ "Mod+Ctrl+L".action.move-column-right = [ ];
+
+ "Mod+Home".action.focus-column-first = [ ];
+ "Mod+End".action.focus-column-last = [ ];
+ "Mod+Ctrl+Home".action.move-column-to-first = [ ];
+ "Mod+Ctrl+End".action.move-column-to-last = [ ];
+
+ "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 = [ ];
+
+ "Mod+Page_Down".action.focus-workspace-down = [ ];
+ "Mod+Page_Up".action.focus-workspace-up = [ ];
+ "Mod+U".action.focus-workspace-down = [ ];
+ "Mod+I".action.focus-workspace-up = [ ];
+ "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = [ ];
+ "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = [ ];
+ "Mod+Ctrl+U".action.move-column-to-workspace-down = [ ];
+ "Mod+Ctrl+I".action.move-column-to-workspace-up = [ ];
+
+ "Mod+Shift+Page_Down".action.move-workspace-down = [ ];
+ "Mod+Shift+Page_Up".action.move-workspace-up = [ ];
+ "Mod+Shift+U".action.move-workspace-down = [ ];
+ "Mod+Shift+I".action.move-workspace-up = [ ];
+ "Mod+Space".action.swap-window-left = [ ];
+ "Mod+Shift+Space".action.swap-window-right = [ ];
+
+ "Mod+WheelScrollDown" = {
+ action.focus-workspace-down = [ ];
+ cooldown-ms = 150;
+ };
+ "Mod+WheelScrollUp" = {
+ action.focus-workspace-up = [ ];
+ cooldown-ms = 150;
+ };
+ "Mod+Ctrl+WheelScrollDown" = {
+ action.move-column-to-workspace-down = [ ];
+ cooldown-ms = 150;
+ };
+
+ "Mod+Ctrl+WheelScrollUp" = {
+ action.move-column-to-workspace-up = [ ];
+ cooldown-ms = 150;
+ };
+
+ MouseForward.action.toggle-overview = [ ];
+
+ "Mod+WheelScrollRight".action.focus-column-right = [ ];
+ "Mod+WheelScrollLeft".action.focus-column-left = [ ];
+ "Mod+Ctrl+WheelScrollRight".action.move-column-right = [ ];
+ "Mod+Ctrl+WheelScrollLeft".action.move-column-left = [ ];
+
+ "Mod+Shift+WheelScrollDown".action.focus-column-right = [ ];
+ "Mod+Shift+WheelScrollUp".action.focus-column-left = [ ];
+ "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = [ ];
+ "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = [ ];
+
+ "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;
+
+ "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+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+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+C".action.center-column = [ ];
+
+ "Mod+W".action.toggle-column-tabbed-display = [ ];
+
+ "Print".action.screenshot = [ ];
+ "Ctrl+Print".action.screenshot-screen = [ ];
+ "Alt+Print".action.screenshot-window = [ ];
+
+ "Mod+Escape" = {
+ allow-inhibiting = false;
+ action.toggle-keyboard-shortcuts-inhibit = [ ];
+ };
+
+ "Mod+p".action.spawn-sh = "${noctaliaIPC} sessionMenu toggle";
+
+ "Ctrl+Alt+Delete".action.quit = [ ];
+
+ "Mod+Shift+P".action.power-off-monitors = [ ];
+ };
+ };
+}