nixos-config/home/niri/default.nix

204 lines
6 KiB
Nix
Raw Normal View History

2025-01-19 21:45:11 -05:00
{
config,
pkgs,
lib,
...
}:
2025-01-18 23:10:45 -05:00
let
wallpaper = "${./nixos-c-book.png}";
2025-01-21 16:24:33 -05:00
terminal = "kitty";
2025-01-19 21:45:11 -05:00
menu = [
"fuzzel"
"-w"
"100"
];
2025-01-18 23:10:45 -05:00
browser = "librewolf";
file-manager = "thunar";
2025-01-19 00:23:46 -05:00
clipboard = "cliphist list | ${lib.concatStringsSep " " menu} --dmenu | cliphist decode | wl-copy";
2025-01-18 23:10:45 -05:00
in
2025-01-18 20:39:51 -05:00
{
2025-01-19 01:20:01 -05:00
programs.niri.settings = {
2025-01-18 20:39:51 -05:00
prefer-no-csd = true;
2025-01-18 21:11:26 -05:00
input.keyboard.xkb.options = "ctrl:nocaps";
spawn-at-startup = [
2025-01-19 00:15:12 -05:00
{ command = [ "${lib.getExe pkgs.waybar}" ]; }
2025-01-19 21:45:11 -05:00
{
command = [
"${lib.getExe pkgs.swaybg}"
"-m"
"fill"
"-i"
wallpaper
];
}
2025-01-19 01:20:01 -05:00
{ command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; }
2025-01-21 04:25:30 -05:00
{
command = [
"wl-paste"
"--watch"
"cliphist"
"store"
];
}
2025-01-18 21:11:26 -05:00
];
2025-01-19 00:15:12 -05:00
hotkey-overlay.skip-at-startup = true;
input = {
touchpad = {
tap = true;
dwt = true;
natural-scroll = true;
click-method = "clickfinger";
};
warp-mouse-to-focus = true;
2025-01-19 22:27:14 -05:00
focus-follows-mouse.enable = false;
2025-01-19 00:15:12 -05:00
};
2025-01-19 01:20:01 -05:00
environment = {
DISPLAY = ":0"; # for xwayland-satellite
ANKI_WAYLAND = "1";
2025-01-19 01:20:01 -05:00
};
2025-01-19 00:15:12 -05:00
layout = {
2025-01-20 20:50:51 -05:00
gaps = 0;
2025-01-19 00:15:12 -05:00
focus-ring = {
2025-01-19 21:45:11 -05:00
width = 4;
2025-01-20 20:50:51 -05:00
active.color = "#4c7899";
inactive.color = "#333333";
2025-01-19 21:45:11 -05:00
};
2025-01-19 00:15:12 -05:00
always-center-single-column = true;
border.enable = false;
};
window-rules = [
{
2025-01-19 12:46:46 -05:00
matches = [
2025-01-19 21:45:11 -05:00
{
app-id = "anki";
title = "Add";
}
2025-01-19 12:46:46 -05:00
{ app-id = "mpv"; }
{ app-id = "Bitwarden"; }
];
open-floating = true;
}
2025-01-19 03:08:04 -05:00
{
2025-01-19 21:45:11 -05:00
matches = [ { app-id = "anki"; } ];
2025-01-19 03:08:04 -05:00
default-column-width.proportion = .25;
}
{
2025-01-19 12:46:46 -05:00
matches = [
{ app-id = "foot"; }
2025-01-19 21:45:11 -05:00
{
app-id = "anki";
title = "^Browse";
}
2025-01-21 12:23:16 -05:00
{ app-id = "com.mitchellh.ghostt"; }
2025-01-21 16:47:47 -05:00
{ app-id = "org.kde.okular"; }
{ app-id = "kitty"; }
2025-01-19 12:46:46 -05:00
];
default-column-width.proportion = .5;
}
{
2025-01-19 21:45:11 -05:00
matches = [ { app-id = "librewolf"; } ];
2025-01-19 12:46:46 -05:00
default-column-width.proportion = .75;
}
];
2025-01-18 20:39:51 -05:00
};
2025-01-18 21:11:26 -05:00
programs.niri.settings.binds =
with config.lib.niri.actions;
let
2025-01-18 23:10:45 -05:00
sh = spawn "sh" "-c";
2025-01-18 21:11:26 -05:00
in
{
"Mod+Return".action = spawn terminal;
"Mod+D".action = spawn menu;
"Mod+Shift+E".action = quit;
"Mod+Equal".action = set-column-width "+10%";
"Mod+Minus".action = set-column-width "-10%";
"Mod+Shift+Equal".action = set-window-height "+10%";
"Mod+Shift+Minus".action = set-window-height "-10%";
"Super+Alt+L".action = spawn "swaylock";
"Mod+Ctrl+Q".action = close-window;
"Mod+H".action = focus-column-left;
"Mod+L".action = focus-column-right;
"Mod+K".action = focus-window-up;
"Mod+J".action = focus-window-down;
"Mod+Shift+H".action = move-column-left;
"Mod+Shift+L".action = move-column-right;
"Mod+Shift+K".action = move-window-up;
"Mod+Shift+J".action = move-window-down;
"Mod+U".action = focus-workspace-up;
"Mod+I".action = focus-workspace-down;
2025-01-19 00:15:12 -05:00
"Mod+Shift+U".action = move-window-to-workspace-up;
"Mod+Shift+I".action = move-window-to-workspace-down;
2025-01-18 21:11:26 -05:00
"Mod+W".action = maximize-column;
2025-01-22 18:52:34 -05:00
"Mod+E".action = set-column-width "50%";
"Mod+R".action = set-column-width "75%";
"Mod+Q".action = set-column-width "25%";
2025-01-18 21:11:26 -05:00
"Mod+C".action = center-column;
"Mod+Shift+Space".action = toggle-window-floating;
"Mod+Space".action = switch-focus-between-floating-and-tiling;
"Print".action = screenshot;
"Alt+Print".action = screenshot-window;
"Ctrl+Print".action = screenshot-screen;
2025-01-22 18:52:34 -05:00
# "Mod+R".action = switch-preset-column-width;
2025-01-18 21:11:26 -05:00
"Mod+Shift+R".action = switch-preset-window-height;
"Mod+Ctrl+R".action = reset-window-height;
"Mod+F".action = fullscreen-window;
2025-01-19 03:08:04 -05:00
"Mod+WheelScrollDown" = {
cooldown-ms = 150;
action = focus-column-right;
};
"Mod+WheelScrollUp" = {
cooldown-ms = 150;
action = focus-column-left;
};
2025-01-19 20:37:34 -05:00
"Mod+Shift+WheelScrollDown" = {
cooldown-ms = 150;
action = focus-workspace-down;
};
"Mod+Shift+WheelScrollUp" = {
cooldown-ms = 150;
action = focus-workspace-up;
};
2025-01-18 21:11:26 -05:00
2025-01-19 03:08:04 -05:00
"XF86AudioRaiseVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+";
"XF86AudioLowerVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-";
2025-01-18 21:11:26 -05:00
"XF86AudioMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
2025-01-19 03:08:04 -05:00
"XF86MonBrightnessUp".action = sh "brightnessctl set 1%+";
"XF86MonBrightnessDown".action = sh "brightnessctl set 1%-";
2025-01-18 21:11:26 -05:00
"Mod+1".action = focus-workspace 1;
"Mod+2".action = focus-workspace 2;
"Mod+3".action = focus-workspace 3;
"Mod+4".action = focus-workspace 4;
"Mod+5".action = focus-workspace 5;
2025-01-19 00:15:12 -05:00
"Mod+6".action = focus-workspace 6;
"Mod+7".action = focus-workspace 7;
"Mod+8".action = focus-workspace 8;
"Mod+9".action = focus-workspace 9;
"Mod+Shift+1".action = move-column-to-workspace 1;
"Mod+Shift+2".action = move-column-to-workspace 2;
"Mod+Shift+3".action = move-column-to-workspace 3;
"Mod+Shift+4".action = move-column-to-workspace 4;
"Mod+Shift+5".action = move-column-to-workspace 5;
"Mod+Shift+6".action = move-column-to-workspace 6;
"Mod+Shift+7".action = move-column-to-workspace 7;
"Mod+Shift+8".action = move-column-to-workspace 8;
"Mod+Shift+9".action = move-column-to-workspace 9;
2025-01-18 21:11:26 -05:00
"Mod+Alt+B".action = spawn browser;
"Mod+Alt+A".action = spawn "anki";
"Mod+Alt+F".action = spawn file-manager;
"Mod+Alt+E".action = spawn "evolution";
"Mod+P".action = spawn "bitwarden";
2025-01-19 00:15:12 -05:00
"Mod+Comma".action = sh clipboard;
"MouseForward".action = spawn "sh" "${./scripts/remote.sh}" "btn1";
"MouseBack".action = spawn "sh" "${./scripts/remote.sh}";
2025-01-18 21:11:26 -05:00
};
2025-01-18 20:39:51 -05:00
}