diff --git a/home/niri/default.nix b/home/niri/default.nix index 28e0f16..ceea78a 100644 --- a/home/niri/default.nix +++ b/home/niri/default.nix @@ -1,4 +1,8 @@ -{pkgs, scale ? null, ...}: let +{ + pkgs, + scale ? null, + ... +}: let terminal = "${pkgs.foot}/bin/footclient"; nautilus = "${pkgs.nautilus}/bin/nautilus"; playerctl = "${pkgs.playerctl}/bin/playerctl"; @@ -53,6 +57,9 @@ in { # Since native Home Manager doesn't have a programs.niri module yet, # we generate the KDL configuration file directly. + home.packages = with pkgs; [ + wl-clipboard + ]; programs.hyprlock = { enable = true; settings = { @@ -85,140 +92,144 @@ in { }; xdg.configFile."niri/config.kdl".text = '' - spawn-at-startup "${pkgs.swaybg}/bin/swaybg" "-i" "${../hyprland/files/wallpaper.png}" "-m" "fill" - spawn-at-startup "foot" "--server" - spawn-at-startup "ags" "run" - spawn-at-startup "${pkgs.mate-polkit}/bin/polkit-mate" - prefer-no-csd + spawn-at-startup "${pkgs.swaybg}/bin/swaybg" "-i" "${../hyprland/files/wallpaper.png}" "-m" "fill" + spawn-at-startup "foot" "--server" + spawn-at-startup "ags" "run" + spawn-at-startup "${pkgs.mate-polkit}/bin/polkit-mate" + prefer-no-csd - hotkey-overlay { - skip-at-startup - } + hotkey-overlay { + skip-at-startup + } - gestures { - hot-corners { - off - } - } - - - layout { - gaps 5 - border { - off - } - focus-ring { - width 4 - active-color "rgba(0, 47, 95, 238)" - inactive-color "rgba(255, 255, 255, 0)" - } - } - - input { - mouse { - accel-speed 0.5 - } - touchpad { - tap - } - keyboard { - xkb { - options "compose:rctrl" + gestures { + hot-corners { + off } } - focus-follows-mouse max-scroll-amount="10%" - warp-mouse-to-focus - } -${if scale != null then '' - output "eDP-1" { - scale ${toString scale} - } -'' else ""} window-rule { - match app-id="vicinae" - open-floating true - } - binds { - // General Binds - Mod+Return { spawn "sh" "-c" "${launch_terminal}/bin/launch_terminal $(niri msg --json focused-window | ${pkgs.jq}/bin/jq .pid)"; } - Mod+Shift+Return { spawn "${terminal}"; } - Mod+Q { close-window; } - Mod+A { spawn "${nautilus}"; } - Mod+B { spawn "Helium"; } - Mod+M { maximize-column; } - Mod+F {maximize-window-to-edges;} - Mod+Tab { toggle-overview; } - // Vicinae Binds - Mod+C { spawn "vicinae" "vicinae://extensions/vicinae/clipboard/history"; } - Mod+N { spawn "vicinae" "vicinae://extensions/vicinae/wm/switch-windows"; } - Mod+Escape { spawn "vicinae" "open" "-q" "Power Management "; } - Mod+Space { spawn "vicinae" "toggle"; } + layout { + gaps 5 + border { + off + } + focus-ring { + width 4 + active-color "rgba(0, 47, 95, 238)" + inactive-color "rgba(255, 255, 255, 0)" + } + } - Mod+Comma { consume-or-expel-window-left; } - Mod+Period { consume-or-expel-window-right; } + input { + mouse { + accel-speed 0.5 + } + touchpad { + tap + } + keyboard { + xkb { + options "compose:rctrl" + } + } + focus-follows-mouse max-scroll-amount="10%" + warp-mouse-to-focus + } + ${ + if scale != null + then '' + output "eDP-1" { + scale ${toString scale} + } + '' + else "" + } window-rule { + match app-id="vicinae" + open-floating true + } - Mod+Alt+H { set-column-width "-5%"; } - Mod+Alt+L { set-column-width "+5%"; } - Mod+Alt+K { set-window-height "-5%"; } - Mod+Alt+J { set-window-height "+5%"; } + binds { + // General Binds + Mod+Return { spawn "sh" "-c" "${launch_terminal}/bin/launch_terminal $(niri msg --json focused-window | ${pkgs.jq}/bin/jq .pid)"; } + Mod+Shift+Return { spawn "${terminal}"; } + Mod+Q { close-window; } + Mod+A { spawn "${nautilus}"; } + Mod+B { spawn "Helium"; } + Mod+M { maximize-column; } + Mod+F {maximize-window-to-edges;} + Mod+Tab { toggle-overview; } - // Movement - Mod+H { focus-column-left; } - Mod+J { focus-window-down; } - Mod+K { focus-window-up; } - Mod+L { focus-column-right; } + // Vicinae Binds + Mod+C { spawn "vicinae" "vicinae://launch/clipboard/history"; } + Mod+N { spawn "vicinae" "vicinae://launch/wm/switch-windows"; } + Mod+Escape { spawn "vicinae" "open" "-q" "Power Management "; } + Mod+Space { spawn "vicinae" "toggle"; } - Mod+Shift+H { move-column-left; } - Mod+Shift+L { move-column-right; } - Mod+Shift+J { move-window-down; } - Mod+Shift+K { move-window-up; } + Mod+Comma { consume-or-expel-window-left; } + Mod+Period { consume-or-expel-window-right; } - // Workspaces - Mod+Shift+U { move-column-to-workspace-down; } - Mod+Shift+I { move-column-to-workspace-up; } + Mod+Alt+H { set-column-width "-5%"; } + Mod+Alt+L { set-column-width "+5%"; } + Mod+Alt+K { set-window-height "-5%"; } + Mod+Alt+J { set-window-height "+5%"; } - Mod+I { focus-workspace-up; } - Mod+U { focus-workspace-down; } - Mod+1 { focus-workspace 1; } - Mod+2 { focus-workspace 2; } - Mod+3 { focus-workspace 3; } - Mod+4 { focus-workspace 4; } - Mod+5 { focus-workspace 5; } - Mod+6 { focus-workspace 6; } - Mod+7 { focus-workspace 7; } - Mod+8 { focus-workspace 8; } - Mod+9 { focus-workspace 9; } + // Movement + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } - // Move to workspace - Mod+Shift+1 { move-column-to-workspace 1; } - Mod+Shift+2 { move-column-to-workspace 2; } - Mod+Shift+3 { move-column-to-workspace 3; } - Mod+Shift+4 { move-column-to-workspace 4; } - Mod+Shift+5 { move-column-to-workspace 5; } - Mod+Shift+6 { move-column-to-workspace 6; } - Mod+Shift+7 { move-column-to-workspace 7; } - Mod+Shift+8 { move-column-to-workspace 8; } - Mod+Shift+9 { move-column-to-workspace 9; } + Mod+Shift+H { move-column-left; } + Mod+Shift+L { move-column-right; } + Mod+Shift+J { move-window-down; } + Mod+Shift+K { move-window-up; } - Print { screenshot; } - Ctrl+Alt+L {spawn "${pkgs.hyprlock}/bin/hyprlock"; } + // Workspaces + Mod+Shift+U { move-column-to-workspace-down; } + Mod+Shift+I { move-column-to-workspace-up; } - XF86MonBrightnessUp { spawn "${brightnessctl}" "set" "+10%"; } - XF86MonBrightnessDown { spawn "${brightnessctl}" "set" "10%-"; } + Mod+I { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } - // Volume - XF86AudioRaiseVolume { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "10%+" "--limit" "1.0"; } - XF86AudioLowerVolume { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "10%-"; } - XF86AudioMute { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } - XF86AudioMicMute { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + // Move to workspace + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } - // Media - XF86AudioNext { spawn "${playerctl}" "next"; } - XF86AudioPrev { spawn "${playerctl}" "previous"; } - Mod+XF86AudioMute { spawn "${playerctl}" "play-pause"; } - Mod+XF86AudioRaiseVolume { spawn "${playerctl}" "next"; } - Mod+XF86AudioLowerVolume { spawn "${playerctl}" "previous"; } - } + Print { screenshot; } + Ctrl+Alt+L {spawn "${pkgs.hyprlock}/bin/hyprlock"; } + + XF86MonBrightnessUp { spawn "${brightnessctl}" "set" "+10%"; } + XF86MonBrightnessDown { spawn "${brightnessctl}" "set" "10%-"; } + + // Volume + XF86AudioRaiseVolume { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "10%+" "--limit" "1.0"; } + XF86AudioLowerVolume { spawn "${wpctl}" "set-volume" "@DEFAULT_AUDIO_SINK@" "10%-"; } + XF86AudioMute { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } + XF86AudioMicMute { spawn "${wpctl}" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + + // Media + XF86AudioNext { spawn "${playerctl}" "next"; } + XF86AudioPrev { spawn "${playerctl}" "previous"; } + Mod+XF86AudioMute { spawn "${playerctl}" "play-pause"; } + Mod+XF86AudioRaiseVolume { spawn "${playerctl}" "next"; } + Mod+XF86AudioLowerVolume { spawn "${playerctl}" "previous"; } + } ''; }