diff --git a/modules/features/niri.nix b/modules/features/niri.nix index 84acc2c..1d4c10f 100644 --- a/modules/features/niri.nix +++ b/modules/features/niri.nix @@ -59,464 +59,586 @@ ]; }; - programs.niri = { - # Niri is enabled by niri.nixosModules.niri - settings = { - input = { - keyboard = { - xkb = { - layout = "us"; - options = "compose:ralt"; - }; - }; - touchpad = { - enable = true; - click-method = "clickfinger"; - drag = true; - drag-lock = true; - dwt = true; - natural-scroll = false; - scroll-method = "two-finger"; - tap = true; - tap-button-map = "left-right-middle"; # Mouse button click to register when tapping with 1, 2, or 3 fingers - }; - warp-mouse-to-focus = { - enable = true; - mode = "center-xy-always"; - }; - focus-follows-mouse = { - enable = true; - }; - mod-key = "Super"; - }; - binds = { - # General - "Mod+Slash" = { - action.show-hotkey-overlay = { }; - repeat = false; - hotkey-overlay.title = "Show hotkeys"; - }; - "Mod+Q" = { - action.close-window = { }; - repeat = false; - hotkey-overlay.title = "Close window"; - }; - "Mod+W" = { - action.spawn = foot; - repeat = false; - hotkey-overlay.title = "Terminal"; - }; - "Mod+A" = { - action.spawn = [ - vicinae - "toggle" - ]; - repeat = false; - hotkey-overlay.title = "Launcher"; - }; - "Mod+E" = { - action.spawn = [ - foot - "-e" - yazi - ]; - repeat = false; - hotkey-overlay.title = "File Explorer"; - }; - "Mod+Escape" = { - action.spawn = [ - noctalia-shell - "ipc" - "call" - "sessionMenu" - "toggle" - ]; - repeat = false; - hotkey-overlay.title = "Session menu"; - }; - - # Notifications - "Mod+N" = { - action.spawn = [ - noctalia-shell - "ipc" - "call" - "notifications" - "toggleHistory" - ]; - repeat = false; - hotkey-overlay.title = "Show notifications"; - }; - "Mod+Ctrl+N" = { - action.spawn = [ - noctalia-shell - "ipc" - "call" - "notifications" - "clear" - ]; - repeat = false; - hotkey-overlay.title = "Clear notifications"; - }; - - # Media keys - "XF86AudioPrev" = { - action.spawn = [ - playerctl - "previous" - ]; - repeat = false; - hotkey-overlay.title = "Previous track"; - }; - "XF86AudioPlay" = { - action.spawn = [ - playerctl - "play-pause" - ]; - repeat = false; - hotkey-overlay.title = "Play / pause track"; - }; - "XF86AudioNext" = { - action.spawn = [ - playerctl - "next" - ]; - repeat = false; - hotkey-overlay.title = "Next track"; - }; - "XF86AudioRaiseVolume" = { - action.spawn = [ - wpctl - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.05+" - ]; - repeat = true; - allow-when-locked = true; - hotkey-overlay.title = "Raise volume"; - }; - "XF86AudioLowerVolume" = { - action.spawn = [ - wpctl - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.05-" - ]; - repeat = true; - allow-when-locked = true; - hotkey-overlay.title = "Lower volume"; - }; - "XF86AudioMute" = { - action.spawn = [ - wpctl - "set-mute" - "@DEFAULT_AUDIO_SINK@" - "toggle" - ]; - repeat = false; - allow-when-locked = true; - hotkey-overlay.title = "Mute playback"; - }; - "Alt+XF86AudioRaiseVolume" = { - action.spawn = [ - wpctl - "set-volume" - "@DEFAULT_AUDIO_SOURCE@" - "0.05+" - ]; - repeat = true; - allow-when-locked = true; - hotkey-overlay.title = "Raise microphone volume"; - }; - "Alt+XF86AudioLowerVolume" = { - action.spawn = [ - wpctl - "set-volume" - "@DEFAULT_AUDIO_SOURCE@" - "0.05-" - ]; - repeat = true; - allow-when-locked = true; - hotkey-overlay.title = "Lower microphone volume"; - }; - "Alt+XF86AudioMute" = { - action.spawn = [ - wpctl - "set-mute" - "@DEFAULT_AUDIO_SOURCE@" - "toggle" - ]; - repeat = false; - allow-when-locked = true; - hotkey-overlay.title = "Mute microphone"; - }; - - # Brightness - "XF86MonBrightnessUp" = { - action.spawn = [ - brightnessctl - "set" - "5%+" - ]; - repeat = true; - allow-when-locked = true; - hotkey-overlay.title = "Increase brightness"; - }; - "XF86MonBrightnessDown" = { - action.spawn = [ - brightnessctl - "set" - "5%-" - ]; - repeat = true; - allow-when-locked = true; - hotkey-overlay.title = "Decrease brightness"; - }; - - # Screen capture - "Print" = { - action.screenshot = { - show-pointer = false; - }; - repeat = false; - hotkey-overlay.title = "Screenshot"; - }; - "Mod+Print" = { - action.screenshot-window = { - # show-pointer = false; - }; - repeat = false; - hotkey-overlay.title = "Screenshot window"; - }; - "Shift+Print" = { - action.screenshot-screen = { - show-pointer = false; - }; - repeat = false; - hotkey-overlay.title = "Screenshot screen"; - }; - - # Display scaling - "Mod+Ctrl+Equal" = { - action.spawn = [ - "output-scale" - "+0.1" - ]; - repeat = true; - hotkey-overlay.title = "Increase display scale"; - }; - "Mod+Ctrl+Minus" = { - action.spawn = [ - "output-scale" - "-0.1" - ]; - repeat = true; - hotkey-overlay.title = "Decrease display scale"; - }; - "Mod+Ctrl+0" = { - action.spawn = [ - "output-scale" - "1.0" - ]; - repeat = true; - hotkey-overlay.title = "Reset display scale"; - }; - - # Window and column size - "Mod+F" = { - action.maximize-column = { }; - repeat = false; - hotkey-overlay.title = "Maximize Column"; - }; - "Mod+Shift+F" = { - action.fullscreen-window = { }; - repeat = false; - hotkey-overlay.title = "Fullscreen"; - }; - "Mod+Ctrl+F" = { - action.expand-column-to-available-width = { }; - repeat = false; - hotkey-overlay.title = "Fill empty column space"; - }; - "Mod+Equal" = { - action.set-column-width = "+10%"; - repeat = true; - hotkey-overlay.title = "Increase column width"; - }; - "Mod+Minus" = { - action.set-column-width = "-10%"; - repeat = true; - hotkey-overlay.title = "Decrease column width"; - }; - "Mod+Shift+Equal" = { - action.set-window-height = "+10%"; - repeat = true; - hotkey-overlay.title = "Increase window height"; - }; - "Mod+Shift+Minus" = { - action.set-window-height = "-10%"; - repeat = true; - hotkey-overlay.title = "Decrease window height"; - }; - "Mod+Z" = { - action.toggle-window-floating = { }; - repeat = false; - hotkey-overlay.title = "Toggle floating"; - }; - "Mod+T" = { - action.toggle-column-tabbed-display = { }; - repeat = false; - hotkey-overlay.title = "Toggle tabbed column"; - }; - - # Window and column movement - "Mod+K" = { - action.focus-window-or-monitor-up = { }; - repeat = false; - hotkey-overlay.title = "Focus window up"; - }; - "Mod+J" = { - action.focus-window-or-monitor-down = { }; - repeat = false; - hotkey-overlay.title = "Focus window down"; - }; - "Mod+H" = { - action.focus-column-or-monitor-left = { }; - repeat = false; - hotkey-overlay.title = "Focus window left"; - }; - "Mod+L" = { - action.focus-column-or-monitor-right = { }; - repeat = false; - hotkey-overlay.title = "Focus window right"; - }; - "Mod+BracketLeft" = { - action.consume-or-expel-window-left = { }; - repeat = false; - hotkey-overlay.title = "Move window left"; - }; - "Mod+BracketRight" = { - action.consume-or-expel-window-right = { }; - repeat = false; - hotkey-overlay.title = "Move window right"; - }; - "Mod+Shift+K" = { - action.move-column-to-monitor-up = { }; - repeat = false; - hotkey-overlay.title = "Move column up"; - }; - "Mod+Shift+J" = { - action.move-column-to-monitor-down = { }; - repeat = false; - hotkey-overlay.title = "Move column down"; - }; - "Mod+Shift+H" = { - action.move-column-left-or-to-monitor-left = { }; - repeat = false; - hotkey-overlay.title = "Move column left"; - }; - "Mod+Shift+L" = { - action.move-column-right-or-to-monitor-right = { }; - repeat = false; - hotkey-overlay.title = "Move column right"; - }; - - # Workspaces - "Mod+Ctrl+K" = { - action.focus-workspace-up = { }; - repeat = false; - hotkey-overlay.title = "Focus workspace up"; - }; - "Mod+Ctrl+J" = { - action.focus-workspace-down = { }; - repeat = false; - hotkey-overlay.title = "Focus workspace down"; - }; - "Mod+Ctrl+Shift+K" = { - action.move-column-to-workspace-up = { }; - repeat = false; - hotkey-overlay.title = "Move column to workspace up"; - }; - "Mod+Ctrl+Shift+J" = { - action.move-column-to-workspace-down = { }; - repeat = false; - hotkey-overlay.title = "Move column to workspace down"; - }; - - # Overview - "Mod+Tab" = { - action.toggle-overview = { }; - repeat = false; - hotkey-overlay.title = "Toggle overview"; - }; - }; - window-rules = [ - { - geometry-corner-radius = { - bottom-left = 10.0; - bottom-right = 10.0; - top-left = 10.0; - top-right = 10.0; - }; - clip-to-geometry = true; + xdg.configFile."niri/config.kdl".text = '' + input { + keyboard { + xkb { + layout "us" + model "" + rules "" + variant "" + options "compose:ralt" } - # Unfortunately windows like firefox extensions set their titles after spawning preventing - # the window rules from being applied. There is a script to fix this but it is pretty hacky. - # { - # matches = [ - # { - # title = "^Extension:.*"; - # app-id = "firefox"; - # } - # ]; - # open-floating = true; - # } - { - matches = [ - { app-id = "foot"; } - { app-id = "Alacritty"; } - ]; - opacity = 0.90; - default-column-width.proportion = 0.4; - } - ]; - layer-rules = [ - { - # Use noctalia wallpaper as overview backdrop - matches = [ { namespace = "^noctalia-overview*"; } ]; - place-within-backdrop = true; - } - ]; - prefer-no-csd = true; - screenshot-path = "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png"; - hotkey-overlay = { - skip-at-startup = true; - }; - spawn-at-startup = [ - { argv = [ "noctalia-shell" ]; } - ]; - cursor = { - size = config.home.pointerCursor.size; - theme = config.home.pointerCursor.name; - hide-when-typing = true; - }; - gestures = { - hot-corners.enable = false; - }; - xwayland-satellite = { - enable = true; - path = lib.getExe pkgs.xwayland-satellite-unstable; - }; - environment = { - "NIXOS_OZONE_WL" = "1"; - }; - debug = { - # Allows notification actions and window activation from Noctalia. - honor-xdg-activation-with-invalid-serial = { }; - }; - # Support for external 'includes' sounds like it is in the works. - # Will just have to wait until then for noctalia color scheme integration. - }; - }; + repeat-delay 400 + repeat-rate 35 + track-layout "global" + } + touchpad { + tap + dwt + drag true + drag-lock + scroll-method "two-finger" + click-method "clickfinger" + tap-button-map "left-right-middle" + } + warp-mouse-to-focus mode="center-xy-always" + focus-follows-mouse + mod-key "Super" + } + screenshot-path "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png" + prefer-no-csd + layout { + gaps 16 + struts { + left 0 + right 0 + top 0 + bottom 0 + } + focus-ring { width 4; } + border { off; } + default-column-width + center-focused-column "never" + } + cursor { + xcursor-theme "${config.home.pointerCursor.name}" + xcursor-size ${toString config.home.pointerCursor.size} + hide-when-typing + } + hotkey-overlay { skip-at-startup; } + environment { "NIXOS_OZONE_WL" "1"; } + binds { + Alt+XF86AudioLowerVolume allow-when-locked=true hotkey-overlay-title="Lower microphone volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SOURCE@" "0.05-"; } + Alt+XF86AudioMute allow-when-locked=true hotkey-overlay-title="Mute microphone" repeat=false { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + Alt+XF86AudioRaiseVolume allow-when-locked=true hotkey-overlay-title="Raise microphone volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SOURCE@" "0.05+"; } + Mod+A hotkey-overlay-title="Launcher" repeat=false { spawn "${vicinae}" "toggle"; } + Mod+BracketLeft hotkey-overlay-title="Move window left" repeat=false { consume-or-expel-window-left; } + Mod+BracketRight hotkey-overlay-title="Move window right" repeat=false { consume-or-expel-window-right; } + Mod+Ctrl+0 hotkey-overlay-title="Reset display scale" { spawn "output-scale" "1.0"; } + Mod+Ctrl+Equal hotkey-overlay-title="Increase display scale" { spawn "output-scale" "+0.1"; } + Mod+Ctrl+F hotkey-overlay-title="Fill empty column space" repeat=false { expand-column-to-available-width; } + Mod+Ctrl+J hotkey-overlay-title="Focus workspace down" repeat=false { focus-workspace-down; } + Mod+Ctrl+K hotkey-overlay-title="Focus workspace up" repeat=false { focus-workspace-up; } + Mod+Ctrl+Minus hotkey-overlay-title="Decrease display scale" { spawn "output-scale" "-0.1"; } + Mod+Ctrl+N hotkey-overlay-title="Clear notifications" repeat=false { spawn "${noctalia-shell}" "ipc" "call" "notifications" "clear"; } + Mod+Ctrl+Shift+J hotkey-overlay-title="Move column to workspace down" repeat=false { move-column-to-workspace-down; } + Mod+Ctrl+Shift+K hotkey-overlay-title="Move column to workspace up" repeat=false { move-column-to-workspace-up; } + Mod+E hotkey-overlay-title="File Explorer" repeat=false { spawn "${foot}" "-e" "${yazi}"; } + Mod+Equal hotkey-overlay-title="Increase column width" { set-column-width "+10%"; } + Mod+Escape hotkey-overlay-title="Session menu" repeat=false { spawn "${noctalia-shell}" "ipc" "call" "sessionMenu" "toggle"; } + Mod+F hotkey-overlay-title="Maximize Column" repeat=false { maximize-column; } + Mod+H hotkey-overlay-title="Focus window left" repeat=false { focus-column-or-monitor-left; } + Mod+J hotkey-overlay-title="Focus window down" repeat=false { focus-window-or-monitor-down; } + Mod+K hotkey-overlay-title="Focus window up" repeat=false { focus-window-or-monitor-up; } + Mod+L hotkey-overlay-title="Focus window right" repeat=false { focus-column-or-monitor-right; } + Mod+Minus hotkey-overlay-title="Decrease column width" { set-column-width "-10%"; } + Mod+N hotkey-overlay-title="Show notifications" repeat=false { spawn "${noctalia-shell}" "ipc" "call" "notifications" "toggleHistory"; } + Mod+Print hotkey-overlay-title="Screenshot window" repeat=false { screenshot-window; } + Mod+Q hotkey-overlay-title="Close window" repeat=false { close-window; } + Mod+Shift+Equal hotkey-overlay-title="Increase window height" { set-window-height "+10%"; } + Mod+Shift+F hotkey-overlay-title="Fullscreen" repeat=false { fullscreen-window; } + Mod+Shift+H hotkey-overlay-title="Move column left" repeat=false { move-column-left-or-to-monitor-left; } + Mod+Shift+J hotkey-overlay-title="Move column down" repeat=false { move-column-to-monitor-down; } + Mod+Shift+K hotkey-overlay-title="Move column up" repeat=false { move-column-to-monitor-up; } + Mod+Shift+L hotkey-overlay-title="Move column right" repeat=false { move-column-right-or-to-monitor-right; } + Mod+Shift+Minus hotkey-overlay-title="Decrease window height" { set-window-height "-10%"; } + Mod+Slash hotkey-overlay-title="Show hotkeys" repeat=false { show-hotkey-overlay; } + Mod+T hotkey-overlay-title="Toggle tabbed column" repeat=false { toggle-column-tabbed-display; } + Mod+Tab hotkey-overlay-title="Toggle overview" repeat=false { toggle-overview; } + Mod+W hotkey-overlay-title="Terminal" repeat=false { spawn "${foot}"; } + Mod+Z hotkey-overlay-title="Toggle floating" repeat=false { toggle-window-floating; } + Print hotkey-overlay-title="Screenshot" repeat=false { screenshot show-pointer=false; } + Shift+Print hotkey-overlay-title="Screenshot screen" repeat=false { screenshot-screen show-pointer=false; } + XF86AudioLowerVolume allow-when-locked=true hotkey-overlay-title="Lower volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"; } + XF86AudioMute allow-when-locked=true hotkey-overlay-title="Mute playback" repeat=false { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } + XF86AudioNext hotkey-overlay-title="Next track" repeat=false { spawn "${playerctl}" "next"; } + XF86AudioPlay hotkey-overlay-title="Play / pause track" repeat=false { spawn "${playerctl}" "play-pause"; } + XF86AudioPrev hotkey-overlay-title="Previous track" repeat=false { spawn "${playerctl}" "previous"; } + XF86AudioRaiseVolume allow-when-locked=true hotkey-overlay-title="Raise volume" { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"; } + XF86MonBrightnessDown allow-when-locked=true hotkey-overlay-title="Decrease brightness" { spawn "${brightnessctl}" "set" "5%-"; } + XF86MonBrightnessUp allow-when-locked=true hotkey-overlay-title="Increase brightness" { spawn "${brightnessctl}" "set" "5%+"; } + } + spawn-at-startup "noctalia-shell" + blur { + passes 2 + offset 4.0 + } + window-rule { + geometry-corner-radius 10.000000 10.000000 10.000000 10.000000 + clip-to-geometry true + } + window-rule { + match app-id="foot" + match app-id="Alacritty" + default-column-width { proportion 0.400000; } + opacity 0.870000 + background-effect { + blur true + } + } + layer-rule { + match namespace="^noctalia-overview*" + place-within-backdrop true + } + gestures { hot-corners { off; }; } + xwayland-satellite { path "${lib.getExe pkgs.xwayland-satellite-unstable}"; } + ''; + # settings = { + # input = { + # keyboard = { + # xkb = { + # layout = "us"; + # options = "compose:ralt"; + # }; + # }; + # touchpad = { + # enable = true; + # click-method = "clickfinger"; + # drag = true; + # drag-lock = true; + # dwt = true; + # natural-scroll = false; + # scroll-method = "two-finger"; + # tap = true; + # tap-button-map = "left-right-middle"; # Mouse button click to register when tapping with 1, 2, or 3 fingers + # }; + # warp-mouse-to-focus = { + # enable = true; + # mode = "center-xy-always"; + # }; + # focus-follows-mouse = { + # enable = true; + # }; + # mod-key = "Super"; + # }; + # binds = { + # # General + # "Mod+Slash" = { + # action.show-hotkey-overlay = { }; + # repeat = false; + # hotkey-overlay.title = "Show hotkeys"; + # }; + # "Mod+Q" = { + # action.close-window = { }; + # repeat = false; + # hotkey-overlay.title = "Close window"; + # }; + # "Mod+W" = { + # action.spawn = foot; + # repeat = false; + # hotkey-overlay.title = "Terminal"; + # }; + # "Mod+A" = { + # action.spawn = [ + # vicinae + # "toggle" + # ]; + # repeat = false; + # hotkey-overlay.title = "Launcher"; + # }; + # "Mod+E" = { + # action.spawn = [ + # foot + # "-e" + # yazi + # ]; + # repeat = false; + # hotkey-overlay.title = "File Explorer"; + # }; + # "Mod+Escape" = { + # action.spawn = [ + # noctalia-shell + # "ipc" + # "call" + # "sessionMenu" + # "toggle" + # ]; + # repeat = false; + # hotkey-overlay.title = "Session menu"; + # }; + + # # Notifications + # "Mod+N" = { + # action.spawn = [ + # noctalia-shell + # "ipc" + # "call" + # "notifications" + # "toggleHistory" + # ]; + # repeat = false; + # hotkey-overlay.title = "Show notifications"; + # }; + # "Mod+Ctrl+N" = { + # action.spawn = [ + # noctalia-shell + # "ipc" + # "call" + # "notifications" + # "clear" + # ]; + # repeat = false; + # hotkey-overlay.title = "Clear notifications"; + # }; + + # # Media keys + # "XF86AudioPrev" = { + # action.spawn = [ + # playerctl + # "previous" + # ]; + # repeat = false; + # hotkey-overlay.title = "Previous track"; + # }; + # "XF86AudioPlay" = { + # action.spawn = [ + # playerctl + # "play-pause" + # ]; + # repeat = false; + # hotkey-overlay.title = "Play / pause track"; + # }; + # "XF86AudioNext" = { + # action.spawn = [ + # playerctl + # "next" + # ]; + # repeat = false; + # hotkey-overlay.title = "Next track"; + # }; + # "XF86AudioRaiseVolume" = { + # action.spawn = [ + # wpctl + # "set-volume" + # "@DEFAULT_AUDIO_SINK@" + # "0.05+" + # ]; + # repeat = true; + # allow-when-locked = true; + # hotkey-overlay.title = "Raise volume"; + # }; + # "XF86AudioLowerVolume" = { + # action.spawn = [ + # wpctl + # "set-volume" + # "@DEFAULT_AUDIO_SINK@" + # "0.05-" + # ]; + # repeat = true; + # allow-when-locked = true; + # hotkey-overlay.title = "Lower volume"; + # }; + # "XF86AudioMute" = { + # action.spawn = [ + # wpctl + # "set-mute" + # "@DEFAULT_AUDIO_SINK@" + # "toggle" + # ]; + # repeat = false; + # allow-when-locked = true; + # hotkey-overlay.title = "Mute playback"; + # }; + # "Alt+XF86AudioRaiseVolume" = { + # action.spawn = [ + # wpctl + # "set-volume" + # "@DEFAULT_AUDIO_SOURCE@" + # "0.05+" + # ]; + # repeat = true; + # allow-when-locked = true; + # hotkey-overlay.title = "Raise microphone volume"; + # }; + # "Alt+XF86AudioLowerVolume" = { + # action.spawn = [ + # wpctl + # "set-volume" + # "@DEFAULT_AUDIO_SOURCE@" + # "0.05-" + # ]; + # repeat = true; + # allow-when-locked = true; + # hotkey-overlay.title = "Lower microphone volume"; + # }; + # "Alt+XF86AudioMute" = { + # action.spawn = [ + # wpctl + # "set-mute" + # "@DEFAULT_AUDIO_SOURCE@" + # "toggle" + # ]; + # repeat = false; + # allow-when-locked = true; + # hotkey-overlay.title = "Mute microphone"; + # }; + + # # Brightness + # "XF86MonBrightnessUp" = { + # action.spawn = [ + # brightnessctl + # "set" + # "5%+" + # ]; + # repeat = true; + # allow-when-locked = true; + # hotkey-overlay.title = "Increase brightness"; + # }; + # "XF86MonBrightnessDown" = { + # action.spawn = [ + # brightnessctl + # "set" + # "5%-" + # ]; + # repeat = true; + # allow-when-locked = true; + # hotkey-overlay.title = "Decrease brightness"; + # }; + + # # Screen capture + # "Print" = { + # action.screenshot = { + # show-pointer = false; + # }; + # repeat = false; + # hotkey-overlay.title = "Screenshot"; + # }; + # "Mod+Print" = { + # action.screenshot-window = { + # # show-pointer = false; + # }; + # repeat = false; + # hotkey-overlay.title = "Screenshot window"; + # }; + # "Shift+Print" = { + # action.screenshot-screen = { + # show-pointer = false; + # }; + # repeat = false; + # hotkey-overlay.title = "Screenshot screen"; + # }; + + # # Display scaling + # "Mod+Ctrl+Equal" = { + # action.spawn = [ + # "output-scale" + # "+0.1" + # ]; + # repeat = true; + # hotkey-overlay.title = "Increase display scale"; + # }; + # "Mod+Ctrl+Minus" = { + # action.spawn = [ + # "output-scale" + # "-0.1" + # ]; + # repeat = true; + # hotkey-overlay.title = "Decrease display scale"; + # }; + # "Mod+Ctrl+0" = { + # action.spawn = [ + # "output-scale" + # "1.0" + # ]; + # repeat = true; + # hotkey-overlay.title = "Reset display scale"; + # }; + + # # Window and column size + # "Mod+F" = { + # action.maximize-column = { }; + # repeat = false; + # hotkey-overlay.title = "Maximize Column"; + # }; + # "Mod+Shift+F" = { + # action.fullscreen-window = { }; + # repeat = false; + # hotkey-overlay.title = "Fullscreen"; + # }; + # "Mod+Ctrl+F" = { + # action.expand-column-to-available-width = { }; + # repeat = false; + # hotkey-overlay.title = "Fill empty column space"; + # }; + # "Mod+Equal" = { + # action.set-column-width = "+10%"; + # repeat = true; + # hotkey-overlay.title = "Increase column width"; + # }; + # "Mod+Minus" = { + # action.set-column-width = "-10%"; + # repeat = true; + # hotkey-overlay.title = "Decrease column width"; + # }; + # "Mod+Shift+Equal" = { + # action.set-window-height = "+10%"; + # repeat = true; + # hotkey-overlay.title = "Increase window height"; + # }; + # "Mod+Shift+Minus" = { + # action.set-window-height = "-10%"; + # repeat = true; + # hotkey-overlay.title = "Decrease window height"; + # }; + # "Mod+Z" = { + # action.toggle-window-floating = { }; + # repeat = false; + # hotkey-overlay.title = "Toggle floating"; + # }; + # "Mod+T" = { + # action.toggle-column-tabbed-display = { }; + # repeat = false; + # hotkey-overlay.title = "Toggle tabbed column"; + # }; + + # # Window and column movement + # "Mod+K" = { + # action.focus-window-or-monitor-up = { }; + # repeat = false; + # hotkey-overlay.title = "Focus window up"; + # }; + # "Mod+J" = { + # action.focus-window-or-monitor-down = { }; + # repeat = false; + # hotkey-overlay.title = "Focus window down"; + # }; + # "Mod+H" = { + # action.focus-column-or-monitor-left = { }; + # repeat = false; + # hotkey-overlay.title = "Focus window left"; + # }; + # "Mod+L" = { + # action.focus-column-or-monitor-right = { }; + # repeat = false; + # hotkey-overlay.title = "Focus window right"; + # }; + # "Mod+BracketLeft" = { + # action.consume-or-expel-window-left = { }; + # repeat = false; + # hotkey-overlay.title = "Move window left"; + # }; + # "Mod+BracketRight" = { + # action.consume-or-expel-window-right = { }; + # repeat = false; + # hotkey-overlay.title = "Move window right"; + # }; + # "Mod+Shift+K" = { + # action.move-column-to-monitor-up = { }; + # repeat = false; + # hotkey-overlay.title = "Move column up"; + # }; + # "Mod+Shift+J" = { + # action.move-column-to-monitor-down = { }; + # repeat = false; + # hotkey-overlay.title = "Move column down"; + # }; + # "Mod+Shift+H" = { + # action.move-column-left-or-to-monitor-left = { }; + # repeat = false; + # hotkey-overlay.title = "Move column left"; + # }; + # "Mod+Shift+L" = { + # action.move-column-right-or-to-monitor-right = { }; + # repeat = false; + # hotkey-overlay.title = "Move column right"; + # }; + + # # Workspaces + # "Mod+Ctrl+K" = { + # action.focus-workspace-up = { }; + # repeat = false; + # hotkey-overlay.title = "Focus workspace up"; + # }; + # "Mod+Ctrl+J" = { + # action.focus-workspace-down = { }; + # repeat = false; + # hotkey-overlay.title = "Focus workspace down"; + # }; + # "Mod+Ctrl+Shift+K" = { + # action.move-column-to-workspace-up = { }; + # repeat = false; + # hotkey-overlay.title = "Move column to workspace up"; + # }; + # "Mod+Ctrl+Shift+J" = { + # action.move-column-to-workspace-down = { }; + # repeat = false; + # hotkey-overlay.title = "Move column to workspace down"; + # }; + + # # Overview + # "Mod+Tab" = { + # action.toggle-overview = { }; + # repeat = false; + # hotkey-overlay.title = "Toggle overview"; + # }; + # }; + # window-rules = [ + # { + # geometry-corner-radius = { + # bottom-left = 10.0; + # bottom-right = 10.0; + # top-left = 10.0; + # top-right = 10.0; + # }; + # clip-to-geometry = true; + # } + # # Unfortunately windows like firefox extensions set their titles after spawning preventing + # # the window rules from being applied. There is a script to fix this but it is pretty hacky. + # # { + # # matches = [ + # # { + # # title = "^Extension:.*"; + # # app-id = "firefox"; + # # } + # # ]; + # # open-floating = true; + # # } + # { + # matches = [ + # { app-id = "foot"; } + # { app-id = "Alacritty"; } + # ]; + # opacity = 0.90; + # default-column-width.proportion = 0.4; + # } + # ]; + # layer-rules = [ + # { + # # Use noctalia wallpaper as overview backdrop + # matches = [ { namespace = "^noctalia-overview*"; } ]; + # place-within-backdrop = true; + # } + # ]; + # prefer-no-csd = true; + # screenshot-path = "${config.xdg.userDirs.extraConfig.SCREENSHOTS}/%Y%m%d-%H%M%S.png"; + # hotkey-overlay = { + # skip-at-startup = true; + # }; + # spawn-at-startup = [ + # { argv = [ "noctalia-shell" ]; } + # ]; + # cursor = { + # size = config.home.pointerCursor.size; + # theme = config.home.pointerCursor.name; + # hide-when-typing = true; + # }; + # gestures = { + # hot-corners.enable = false; + # }; + # xwayland-satellite = { + # enable = true; + # path = lib.getExe pkgs.xwayland-satellite-unstable; + # }; + # environment = { + # "NIXOS_OZONE_WL" = "1"; + # }; + # debug = { + # # Allows notification actions and window activation from Noctalia. + # honor-xdg-activation-with-invalid-serial = { }; + # }; + # # Support for external 'includes' sounds like it is in the works. + # # Will just have to wait until then for noctalia color scheme integration. + # }; }; }