mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
216 lines
11 KiB
Nix
216 lines
11 KiB
Nix
{ inputs, config, pkgs, lib, vars, ... }:
|
|
{
|
|
imports = [
|
|
inputs.niri-flake.homeModules.niri
|
|
];
|
|
options.swarselmodules.niri = lib.mkEnableOption "niri settings";
|
|
config = lib.mkIf config.swarselmodules.niri
|
|
{
|
|
|
|
programs.niri = {
|
|
package = pkgs.niri-unstable; # which package to use for niri validation
|
|
settings = {
|
|
xwayland-satellite = {
|
|
enable = true;
|
|
path = "${lib.getExe pkgs.xwayland-satellite-unstable}";
|
|
};
|
|
prefer-no-csd = true;
|
|
layer-rules = [
|
|
{ matches = [{ namespace = "^notifications$"; }]; block-out-from = "screencast"; }
|
|
{ matches = [{ namespace = "^wallpaper$"; }]; place-within-backdrop = true; }
|
|
];
|
|
window-rules = [
|
|
{
|
|
matches = [{ app-id = ".*"; }];
|
|
opacity = 0.95;
|
|
default-column-width = { proportion = 0.5; };
|
|
shadow = {
|
|
enable = true;
|
|
draw-behind-window = true;
|
|
};
|
|
geometry-corner-radius = { top-left = 2.0; top-right = 2.0; bottom-left = 2.0; bottom-right = 2.0; };
|
|
}
|
|
{ matches = [{ app-id = "at.yrlf.wl_mirror"; }]; opacity = 1.0; }
|
|
{ matches = [{ app-id = "Gimp"; }]; opacity = 1.0; }
|
|
{ matches = [{ app-id = "firefox"; }]; opacity = 0.99; }
|
|
{ matches = [{ app-id = "^special.*"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; }
|
|
{ matches = [{ app-id = "chromium-browser"; }]; opacity = 0.99; }
|
|
{ matches = [{ app-id = "^qalculate-gtk$"; }]; open-floating = true; }
|
|
{ matches = [{ app-id = "^blueman$"; }]; open-floating = true; }
|
|
{ matches = [{ app-id = "^pavucontrol$"; }]; open-floating = true; }
|
|
{ matches = [{ app-id = "^syncthingtray$"; }]; open-floating = true; }
|
|
{ matches = [{ app-id = "^Element$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; block-out-from = "screencast"; }
|
|
# { matches = [{ app-id = "^Element$"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; block-out-from = "screencast"; }
|
|
{ matches = [{ app-id = "^vesktop$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; block-out-from = "screencast"; }
|
|
# { matches = [{ app-id = "^vesktop$"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; block-out-from = "screencast"; }
|
|
{ matches = [{ app-id = "^com.nextcloud.desktopclient.nextcloud$"; }]; open-floating = true; }
|
|
{ matches = [{ title = ".*1Password.*"; }]; excludes = [{ app-id = "^firefox$"; } { app-id = "^emacs$"; } { app-id = "^kitty$"; }]; open-floating = true; block-out-from = "screencast"; }
|
|
{ matches = [{ title = "(?:Open|Save) (?:File|Folder|As)"; }]; open-floating = true; }
|
|
{ matches = [{ title = "^Add$"; }]; open-floating = true; }
|
|
{ matches = [{ title = "^Picture-in-Picture$"; }]; open-floating = true; }
|
|
{ matches = [{ title = "Syncthing Tray"; }]; open-floating = true; }
|
|
{ matches = [{ title = "^Emacs Popup Frame$"; }]; open-floating = true; }
|
|
{ matches = [{ title = "^Emacs Popup Anchor$"; }]; open-floating = true; }
|
|
{ matches = [{ app-id = "^spotifytui$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; }
|
|
{ matches = [{ app-id = "^kittyterm$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; }
|
|
];
|
|
environment = {
|
|
DISPLAY = ":0";
|
|
} // vars.waylandSessionVariables;
|
|
screenshot-path = "~/Pictures/Screenshots/screenshot_%Y-%m-%d-%H%M%S.png";
|
|
input = {
|
|
mod-key = "Super";
|
|
keyboard = {
|
|
xkb = {
|
|
layout = "us";
|
|
variant = "altgr-intl";
|
|
};
|
|
};
|
|
mouse = {
|
|
natural-scroll = false;
|
|
};
|
|
touchpad = {
|
|
enable = true;
|
|
tap = true;
|
|
tap-button-map = "left-right-middle";
|
|
natural-scroll = true;
|
|
scroll-method = "two-finger";
|
|
click-method = "clickfinger";
|
|
disabled-on-external-mouse = true;
|
|
drag = true;
|
|
drag-lock = false;
|
|
dwt = true;
|
|
dwtp = true;
|
|
};
|
|
};
|
|
cursor = {
|
|
hide-after-inactive-ms = 2000;
|
|
hide-when-typing = true;
|
|
};
|
|
layout = {
|
|
background-color = "transparent";
|
|
border = {
|
|
enable = true;
|
|
width = 1;
|
|
};
|
|
focus-ring = {
|
|
enable = false;
|
|
};
|
|
gaps = 5;
|
|
};
|
|
binds = with config.lib.niri.actions; let
|
|
sh = spawn "sh" "-c";
|
|
in
|
|
{
|
|
|
|
# "Mod+Super_L" = spawn "killall -SIGUSR1 .waybar-wrapped";
|
|
"Mod+z".action = spawn "killall -SIGUSR1 .waybar-wrapped";
|
|
"Mod+Shift+t".action = toggle-window-rule-opacity;
|
|
# "Mod+Escape".action = "mode $exit";
|
|
"Mod+m".action = focus-workspace-previous;
|
|
"Mod+Shift+Space".action = toggle-window-floating;
|
|
"Mod+Shift+f".action = toggle-windowed-fullscreen;
|
|
"Mod+q".action = close-window;
|
|
"Mod+f".action = spawn "firefox";
|
|
"Mod+Space".action = spawn "fuzzel";
|
|
"Mod+Shift+c".action = spawn "qalculate-gtk";
|
|
"Mod+Ctrl+p".action = spawn "1password" "--quick-acces";
|
|
"Mod+Shift+Escape".action = spawn "kitty" "-o" "confirm_os_window_close=0" "btm";
|
|
"Mod+h".action = sh ''hyprpicker | wl-copy'';
|
|
# "Mod+s".action = spawn "grim" "-g" "\"$(slurp)\"" "-t" "png" "-" "|" "wl-copy" "-t" "image/png";
|
|
# "Mod+s".action = screenshot { show-pointer = false; };
|
|
"Mod+s".action.screenshot = { show-pointer = false; };
|
|
# "Mod+Shift+s".action = spawn "slurp" "|" "grim" "-g" "-" "Pictures/Screenshots/$(date +'screenshot_%Y-%m-%d-%H%M%S.png')";
|
|
# "Mod+Shift+s".action = screenshot-window { write-to-disk = true; };
|
|
"Mod+Shift+s".action.screenshot-window = { write-to-disk = true; };
|
|
# "Mod+Shift+v".action = spawn "wf-recorder" "-g" "'$(slurp -f %o -or)'" "-f" "~/Videos/screenrecord_$(date +%Y-%m-%d-%H%M%S).mkv";
|
|
|
|
"Mod+e".action = sh "emacsclient -nquc -a emacs -e '(dashboard-open)'";
|
|
"Mod+c".action = sh "emacsclient -ce '(org-capture)'";
|
|
"Mod+t".action = sh "emacsclient -ce '(org-agenda)'";
|
|
"Mod+Shift+m".action = sh "emacsclient -ce '(mu4e)'";
|
|
"Mod+Shift+a".action = sh "emacsclient -ce '(swarsel/open-calendar)'";
|
|
|
|
"Mod+a".action = spawn "swarselcheck-niri" "-s";
|
|
"Mod+x".action = spawn "swarselcheck-niri" "-k";
|
|
"Mod+d".action = spawn "swarselcheck-niri" "-d";
|
|
"Mod+w".action = spawn "swarselcheck-niri" "-e";
|
|
|
|
"Mod+p".action = spawn "pass-fuzzel";
|
|
"Mod+o".action = spawn "pass-fuzzel" "--otp";
|
|
"Mod+Shift+p".action = spawn "pass-fuzzel" "--type";
|
|
"Mod+Shift+o".action = spawn "pass-fuzzel" "--otp" "--type";
|
|
|
|
"Mod+Left".action = focus-column-or-monitor-left;
|
|
"Mod+Right".action = focus-column-or-monitor-right;
|
|
"Mod+Down".action = focus-window-or-workspace-down;
|
|
"Mod+Up".action = focus-window-or-workspace-up;
|
|
"Mod+Shift+Left".action = move-column-left;
|
|
"Mod+Shift+Right".action = move-column-right;
|
|
"Mod+Shift+Down".action = move-window-down-or-to-workspace-down;
|
|
"Mod+Shift+Up".action = move-window-up-or-to-workspace-up;
|
|
# "Mod+Ctrl+Shift+c".action = "reload";
|
|
# "Mod+Ctrl+Shift+r".action = "exec swarsel-displaypower";
|
|
# "Mod+Shift+e".action = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
|
# "Mod+r".action = "mode resize";
|
|
# "Mod+Return".action = "exec kitty";
|
|
"Mod+Return".action = spawn "swarselzellij";
|
|
"XF86AudioRaiseVolume".action = spawn "swayosd-client" "--output-volume" "raise";
|
|
"XF86AudioLowerVolume".action = spawn "swayosd-client" "--output-volume" "lower";
|
|
"XF86AudioMute".action = spawn "swayosd-client" "--output-volume" "mute-toggle";
|
|
"XF86MonBrightnessUp".action = spawn "swayosd-client" "--brightness raise";
|
|
"XF86MonBrightnessDown".action = spawn "swayosd-client" "--brightness lower";
|
|
"XF86Display".action = spawn "wl-mirror" "eDP-1";
|
|
"Mod+Escape".action = spawn "wlogout";
|
|
"Mod+Equal".action = set-column-width "+10%";
|
|
"Mod+Minus".action = set-column-width "-10%";
|
|
|
|
"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;
|
|
"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+0".action = focus-workspace 0;
|
|
|
|
"Mod+Shift+1".action = move-column-to-index 1;
|
|
"Mod+Shift+2".action = move-column-to-index 2;
|
|
"Mod+Shift+3".action = move-column-to-index 3;
|
|
"Mod+Shift+4".action = move-column-to-index 4;
|
|
"Mod+Shift+5".action = move-column-to-index 5;
|
|
"Mod+Shift+6".action = move-column-to-index 6;
|
|
"Mod+Shift+7".action = move-column-to-index 7;
|
|
"Mod+Shift+8".action = move-column-to-index 8;
|
|
"Mod+Shift+9".action = move-column-to-index 9;
|
|
"Mod+Shift+0".action = move-column-to-index 0;
|
|
};
|
|
spawn-at-startup = [
|
|
# { command = [ "vesktop" "--start-minimized" "--enable-speech-dispatcher" "--ozone-platform-hint=auto" "--enable-features=WaylandWindowDecorations" "--enable-wayland-ime" ]; }
|
|
# { command = [ "element-desktop" "--hidden" "--enable-features=UseOzonePlatform" "--ozone-platform=wayland" "--disable-gpu-driver-bug-workarounds" ]; }
|
|
# { command = [ "anki" ]; }
|
|
# { command = [ "obsidian" ]; }
|
|
# { command = [ "nm-applet" ]; }
|
|
{ command = [ "niri" "msg" "action" "focus-workspace" "2" ]; }
|
|
];
|
|
workspaces = {
|
|
# "01-Main" = {
|
|
# name = "Scratchpad";
|
|
# };
|
|
"99-Scratchpad" = {
|
|
name = "";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
} // {
|
|
programs.niri = lib.mkIf (!config.swarselmodules.niri) {
|
|
package = null;
|
|
config = null;
|
|
settings = null;
|
|
};
|
|
};
|
|
}
|