nixos/modules/_home/niri.nix
2026-03-28 03:28:42 -03:00

122 lines
3.4 KiB
Nix

{ pkgs, ... }: {
home.sessionVariables = {
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "niri";
XDG_SESSION_DESKTOP = "niri";
QT_QPA_PLATFORM = "wayland;xcb";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_ENABLE_HIGHDPI_SCALING = "1";
QT_SCALE_FACTOR_ROUNDING_POLICY = "RoundPreferFloor";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
XDG_MENU_PREFIX = "plasma-";
};
systemd.user.services.niri-env-import = {
Unit = {
Description = "Import Niri Wayland environment into systemd and D-Bus";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
Type = "oneshot";
ExecStart = pkgs.writeShellScript "niri-env-import" ''
${pkgs.dbus}/bin/dbus-update-activation-environment --systemd \
WAYLAND_DISPLAY \
XDG_CURRENT_DESKTOP \
XDG_SESSION_DESKTOP \
QT_QPA_PLATFORM
'';
RemainAfterExit = true;
};
Install.WantedBy = [ "graphical-session.target" ];
};
systemd.user.services.niri-flake-polkit = {
Unit.After = [ "niri-env-import.service" ];
};
systemd.user.services.xwayland-satellite = {
Unit = {
Description = "Xwayland satellite";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.xwayland-satellite}/bin/xwayland-satellite";
Restart = "on-failure";
};
Install.WantedBy = [ "graphical-session.target" ];
};
xdg.configFile."niri/config.kdl".text = ''
// Modificadores: Mod = Super (tecla Windows)
input {
keyboard {
xkb {
layout "en"
}
}
touchpad {
tap
natural-scroll
}
}
layout {
gaps 8
border {
width 2
active-color "#7aa2f7"
inactive-color "#3b4261"
}
}
prefer-no-csd
screenshot-path "~/Imagens/screenshots/%Y-%m-%d %H-%M-%S.png"
binds {
// Aplicativos
Mod+Return { spawn "wezterm"; }
Mod+D { spawn "fuzzel"; }
Mod+Q { close-window; }
// Foco
Mod+Left { focus-column-left; }
Mod+Right { focus-column-right; }
Mod+Up { focus-window-up; }
Mod+Down { focus-window-down; }
// Mover janelas
Mod+Shift+Left { move-column-left; }
Mod+Shift+Right { move-column-right; }
Mod+Shift+Up { move-window-up; }
Mod+Shift+Down { move-window-down; }
// Workspaces
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+Shift+1 { move-window-to-workspace 1; }
Mod+Shift+2 { move-window-to-workspace 2; }
Mod+Shift+3 { move-window-to-workspace 3; }
Mod+Shift+4 { move-window-to-workspace 4; }
Mod+Shift+5 { move-window-to-workspace 5; }
// Sistema
Mod+Shift+E { quit; }
Mod+L { spawn "swaylock"; }
// Volume
XF86AudioRaiseVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+"; }
XF86AudioLowerVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"; }
XF86AudioMute { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
// Screenshot
Print { screenshot; }
Mod+Print { screenshot-screen; }
}
'';
}