{ pkgs, config, lib, ... }: let cfg = config.xyno.desktop.niri; floatingAppids = [ "floating-alacritty" "org.pulseaudio.pavucontrol" "KeePassXC" "org.gnome.NautilusPreviewer" ]; matchFloat = lib.concatStringsSep "\n" ( map (x: '' window-rule { match app-id="${x}" open-floating true open-focused true } '') floatingAppids ); in { options.xyno.desktop.niri.enable = lib.mkEnableOption "enable the niri desktop with xynos config"; config = lib.mkIf cfg.enable { xyno.desktop = { waybar.enable = lib.mkDefault true; mako.enable = lib.mkDefault true; }; home-manager.users.${config.xyno.system.user.name} = lib.mkIf config.xyno.presets.home-manager.enable ({...}: { xyno.dark-theme.enable = true; }); # xdg.portal = { # enable = true; # wlr.enable = true; # }; programs.niri.enable = true; environment.etc."niri/config.kdl".text = '' // xwayland spawn-at-startup "${pkgs.xwayland-satellite}/bin/xwayland-satellite" screenshot-path "~/Pictures/screenshots/screenshot-%Y-%m-%d %H-%M-%S.png" // Indicate screencasted windows with red colors. window-rule { match is-window-cast-target=true focus-ring { active-color "#f38ba8" inactive-color "#7d0d2d" } border { inactive-color "#7d0d2d" } shadow { color "#7d0d2d70" } tab-indicator { active-color "#f38ba8" inactive-color "#7d0d2d" } } // Block out password managers from screencasts. window-rule { match app-id=r#"^org\.keepassxc\.KeePassXC$"# match app-id=r#"^org\.gnome\.World\.Secrets$"# block-out-from "screencast" } // Block out mako notifications from screencasts. layer-rule { match namespace="^notifications$" block-out-from "screencast" } input { workspace-auto-back-and-forth focus-follows-mouse max-scroll-amount="10%" touchpad { tap } } // autogenerated from here on ${matchFloat} ''; }; }