120 lines
3.6 KiB
Nix
120 lines
3.6 KiB
Nix
{ pkgs, config, lib, ... }: {
|
|
programs.niri = {
|
|
enable = true;
|
|
package = pkgs.niri; # follows nixpkgs version because i am lazy, probably more stable to use the flake one TODO
|
|
settings = {
|
|
prefer-no-csd = true; # no client-side-decorations
|
|
hotkey-overlay = {
|
|
skip-at-startup = true;
|
|
};
|
|
input = {
|
|
mod-key = "SUPER";
|
|
focus-follows-mouse = {
|
|
enable = true;
|
|
max-scroll-amount = "95%";
|
|
};
|
|
mouse.natural-scroll = false;
|
|
};
|
|
outputs = {
|
|
"eDP-2" = {
|
|
focus-at-startup = true;
|
|
#name = "laptop_monitor";
|
|
position = {
|
|
x = 0;
|
|
y = 0;
|
|
};
|
|
};
|
|
"Lenovo Group Limited LEN G24-10 U5B4ZAM2" = {
|
|
#name = "right_monitor";
|
|
position = {
|
|
x = 960;
|
|
y = -1080;
|
|
};
|
|
};
|
|
"Lenovo Group Limited LEN G24-10 U5B4KL78" = {
|
|
#name = "left_monitor";
|
|
position = {
|
|
x = -960;
|
|
y = -1080;
|
|
};
|
|
};
|
|
};
|
|
workspaces = {
|
|
"main".open-on-output = "eDP-2";
|
|
"comms".open-on-output = "Lenovo Group Limited LEN G24-10 U5B4KL78";
|
|
"bg_noise".open-on-output = "Lenovo Group Limited LEN G24-10 U5B4ZAM2";
|
|
};
|
|
layout = {
|
|
gaps = 5;
|
|
struts =
|
|
let
|
|
r = 5;
|
|
in
|
|
{
|
|
left = r;
|
|
right = r;
|
|
bottom = r;
|
|
top = r;
|
|
};
|
|
};
|
|
binds = with config.lib.niri.actions; {
|
|
# keybinds for spawning apps
|
|
"Mod+1".action = spawn "kitty";
|
|
"Mod+F".action = spawn "librewolf";
|
|
"Mod+D".action = spawn "vesktop";
|
|
"Mod+Space".action = spawn "sh -c 'wofi --show drun, run'";
|
|
"Mod+Alt+L".action = spawn "hyprlock";
|
|
"Print".action = screenshot;
|
|
"Mod+2".action = show-hotkey-overlay;
|
|
# window controls
|
|
#"Mod".action = toggle-overview;
|
|
"Mod+F11".action = fullscreen-window;
|
|
"Mod+x".action = close-window;
|
|
"Mod+Tab".action = toggle-window-floating;
|
|
"Mod+h".action = focus-column-or-monitor-left;
|
|
"Mod+j".action = focus-window-or-monitor-down;
|
|
"Mod+k".action = focus-window-or-monitor-up;
|
|
"Mod+l".action = focus-column-or-monitor-right;
|
|
"Mod+Shift+h".action = consume-or-expel-window-left; # no idea if this should be swap-window-left instead
|
|
"Mod+Shift+j".action = move-window-down;
|
|
"Mod+Shift+k".action = move-window-up;
|
|
"Mod+Shift+l".action = consume-or-expel-window-right; # see above comment
|
|
"Mod+WheelScrollUp".action = focus-workspace-up;
|
|
"Mod+WheelScrollDown".action = focus-workspace-down; # not sure if these mouse scroll keybinds are in the right direction
|
|
"Mod+Up".action = focus-workspace-up;
|
|
"Mod+Down".action = focus-workspace-down;
|
|
# not sure how to do the "send window to workspace" keybinds from the hyprland config
|
|
};
|
|
window-rules = [
|
|
{
|
|
geometry-corner-radius =
|
|
let
|
|
r = 10.0;
|
|
in
|
|
{
|
|
top-left = r;
|
|
top-right = r;
|
|
bottom-left = r;
|
|
bottom-right = r;
|
|
};
|
|
clip-to-geometry = true;
|
|
}
|
|
{
|
|
excludes = [
|
|
{
|
|
is-active = true;
|
|
}
|
|
];
|
|
opacity = 0.7;
|
|
}
|
|
];
|
|
xwayland-satellite = {
|
|
enable = true;
|
|
path = lib.getExe pkgs.xwayland-satellite;
|
|
};
|
|
};
|
|
};
|
|
# home.packages = with pkgs; [
|
|
# xwayland-satellite-unstable
|
|
# ];
|
|
}
|