nix-config/modules/home/niri.nix
2026-07-18 17:17:50 +02:00

164 lines
4.3 KiB
Nix

{
inputs,
pkgs,
lib,
config,
...
}:
{
#imports = [ inputs.niri.homeModules.niri ];
programs.alacritty.enable = true;
home.packages = with pkgs; [
xwayland-satellite
wl-mirror
];
gtk = {
enable = true;
};
programs.niri =
let
noctalia-ipc-call =
cmd:
[
(lib.getExe config.programs.noctalia-shell.package)
"ipc"
"call"
]
++ (lib.splitString " " cmd);
noctalia-action = cmd: {
action.spawn = noctalia-ipc-call cmd;
};
noctalia-action-hidden = cmd: {
action.spawn = noctalia-ipc-call cmd;
hotkey-overlay.hidden = true;
};
noctalia-action-locked = cmd: {
action.spawn = noctalia-ipc-call cmd;
allow-when-locked = true;
};
action-with-arg = actionName: arg: {
action.${actionName} = arg;
};
action = actionName: action-with-arg actionName [ ];
in
{
#enable = true;
#package = pkgs.niri-stable;
settings = {
layout = {
gaps = 8;
default-column-width = {
proportion = 1. / 2.;
};
preset-column-widths = [
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
];
};
spawn-at-startup = [
{
command = [ "noctalia-shell" ];
}
{
command = [
"vicinae"
"server"
];
}
];
debug.honor-xdg-activation-with-invalid-serial = [ ];
# Displays
outputs."eDP-1" = {
scale = 1.0;
};
# Keybindings
binds = {
"Mod+Space".action.spawn = [
"vicinae"
"toggle"
];
"Mod+L" = noctalia-action "sessionMenu lock";
"Mod+T".action.spawn = [ "alacritty" ];
"Mod+Q" = action "close-window";
"Mod+Left" = action "focus-column-left";
"Mod+Down" = action "focus-workspace-down";
"Mod+Up" = action "focus-workspace-up";
"Mod+Right" = action "focus-column-right";
"Mod+Shift+Left" = action "move-column-left";
"Mod+Shift+Down" = action "move-window-to-workspace-down";
"Mod+Shift+Up" = action "move-window-to-workspace-up";
"Mod+Shift+Right" = action "move-column-right";
"Mod+Ctrl+Left" = action "focus-monitor-left";
"Mod+Ctrl+Down" = action "focus-window-down";
"Mod+Ctrl+Up" = action "focus-window-up";
"Mod+Ctrl+Right" = action "focus-monitor-right";
"Mod+R" = action "switch-preset-column-width";
"Mod+Shift+R" = action "switch-preset-column-width-back";
"Mod+F" = action "maximize-column";
"Mod+Shift+F" = action "fullscreen-window";
"Mod+V" = action "toggle-window-floating";
"Mod+Shift+V" = action "switch-focus-between-floating-and-tiling";
"XF86MonBrightnessUp" = noctalia-action-locked "brightness increase";
"XF86MonBrightnessDown" = noctalia-action-locked "brightness decrease";
"XF86AudioRaiseVolume" = action-with-arg "spawn" [
"pactl"
"set-sink-volume"
"@DEFAULT_SINK@"
"+5%"
];
"XF86AudioLowerVolume" = action-with-arg "spawn" [
"pactl"
"set-sink-volume"
"@DEFAULT_SINK@"
"-5%"
];
"XF86AudioMute" = action-with-arg "spawn" [
"pactl"
"set-sink-mute"
"@DEFAULT_SINK@"
"toggle"
];
"XF86AudioMicMute" = action-with-arg "spawn" [
"pactl"
"set-source-mute"
"@DEFAULT_SOURCE@"
"toggle"
];
"XF86AudioPlay" = noctalia-action-hidden "media playPause";
"XF86AudioNext" = noctalia-action-hidden "media next";
"XF86AudioPrev" = noctalia-action-hidden "media previous";
};
switch-events = {
lid-close = noctalia-action "sessionMenu lock";
};
window-rules = [
{
matches = [
{ app-id = "^firefox$"; }
];
open-maximized = true;
}
];
};
};
}