77 lines
2.5 KiB
Nix
77 lines
2.5 KiB
Nix
|
|
{ inputs, config, lib, pkgs, ... }:
|
||
|
|
|
||
|
|
with lib;
|
||
|
|
with lib.my;
|
||
|
|
let cfg = config.modules.desktop.picom;
|
||
|
|
in {
|
||
|
|
options.modules.desktop.picom = { enable = mkBoolOpt false; };
|
||
|
|
|
||
|
|
config = mkIf cfg.enable {
|
||
|
|
home-manager.users.${config.user.name} = {
|
||
|
|
services.picom = {
|
||
|
|
backend = "glx";
|
||
|
|
vSync = true;
|
||
|
|
opacityRules = [
|
||
|
|
# "100:class_g = 'Firefox'"
|
||
|
|
# Art/image programs where we need fidelity
|
||
|
|
"100:class_g = 'Gimp'"
|
||
|
|
"100:class_g = 'Inkscape'"
|
||
|
|
"100:class_g = 'aseprite'"
|
||
|
|
"100:class_g = 'krita'"
|
||
|
|
"100:class_g = 'feh'"
|
||
|
|
"100:class_g = 'mpv'"
|
||
|
|
"100:class_g = 'Rofi'"
|
||
|
|
"100:class_g = 'Peek'"
|
||
|
|
"99:_NET_WM_STATE@:32a = '_NET_WM_STATE_FULLSCREEN'"
|
||
|
|
];
|
||
|
|
shadowExclude = [
|
||
|
|
# Put shadows on notifications, the scratch popup and rofi only
|
||
|
|
"! name~='(rofi|scratch|Dunst)$'"
|
||
|
|
];
|
||
|
|
|
||
|
|
fade = true;
|
||
|
|
fadeDelta = 1;
|
||
|
|
fadeSteps = [ 1.0e-2 1.2e-2 ];
|
||
|
|
shadow = true;
|
||
|
|
shadowOffsets = [ (-10) (-10) ];
|
||
|
|
shadowOpacity = 0.22;
|
||
|
|
# activeOpacity = "1.00";
|
||
|
|
# inactiveOpacity = "0.92";
|
||
|
|
#
|
||
|
|
settings = {
|
||
|
|
blur-background-exclude = [
|
||
|
|
"window_type = 'dock'"
|
||
|
|
"window_type = 'desktop'"
|
||
|
|
"class_g = 'Rofi'"
|
||
|
|
"_GTK_FRAME_EXTENTS@:c"
|
||
|
|
];
|
||
|
|
|
||
|
|
# Unredirect all windows if a full-screen opaque window is detected, to
|
||
|
|
# maximize performance for full-screen windows. Known to cause
|
||
|
|
# flickering when redirecting/unredirecting windows.
|
||
|
|
unredir-if-possible = true;
|
||
|
|
|
||
|
|
# GLX backend: Avoid using stencil buffer, useful if you don't have a
|
||
|
|
# stencil buffer. Might cause incorrect opacity when rendering
|
||
|
|
# transparent content (but never practically happened) and may not work
|
||
|
|
# with blur-background. My tests show a 15% performance boost.
|
||
|
|
# Recommended.
|
||
|
|
glx-no-stencil = true;
|
||
|
|
|
||
|
|
# Use X Sync fence to sync clients' draw calls, to make sure all draw
|
||
|
|
# calls are finished before picom starts drawing. Needed on
|
||
|
|
# nvidia-drivers with GLX backend for some users.
|
||
|
|
xrender-sync-fence = true;
|
||
|
|
|
||
|
|
shadow-radius = 12;
|
||
|
|
# blur-background = true;
|
||
|
|
# blur-background-frame = true;
|
||
|
|
# blur-background-fixed = true;
|
||
|
|
blur-kern = "7x7box";
|
||
|
|
blur-strength = 320;
|
||
|
|
};
|
||
|
|
};
|
||
|
|
};
|
||
|
|
};
|
||
|
|
}
|