marleyos/modules/home/services/picom/default.nix
2024-11-22 22:40:54 -08:00

96 lines
2.7 KiB
Nix

{
lib,
config,
pkgs,
...
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.marleyos.services.picom;
hasXorg = config.xsession.enable;
in
{
options.marleyos.services.picom.enable = mkEnableOption "picom";
config = mkIf (cfg.enable && hasXorg) {
services.picom = {
enable = true;
package = config.lib.nixGL.wrap pkgs.picom;
};
# The module config options are a nightmare.
xdg.configFile."picom/picom.conf".text = # conf
''
# Shadows - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
shadow = true;
shadow-radius = 20;
shadow-opacity = .30;
shadow-offset-x = -7;
shadow-offset-y = 7;
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'"
];
# Fading - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fading = true;
fade-in-step = 0.03;
fade-out-step = 0.03;
# Transparency / Opacity - - - - - - - - - - - - - - - - - - - - - - -
inactive-opacity = 0.7;
active-opacity = 0.9;
frame-opacity = 0.7;
inactive-opacity-override = false;
focus-exclude = [ "class_g = 'Cairo-clock'" ];
opacity-rule = [
"100:class_g = 'firefox'",
"60:class_g = 'dolphin'",
"50:class_g = 'cava'"
];
# Corners - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
corner-radius = 20;
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"class_g = 'Dunst'"
];
# Background Blurring - - - - - - - - - - - - - - - - - - - - - - - - -
blur-method = "dual_kawase";
blur-size = 12;
blur-strength = 10;
blur-background = false;
blur-kern = "3x3box";
blur-background-exclude = [
"window_type = 'desktop'",
"name = 'firefox'",
"class_g = 'slop'"
];
# General - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
backend = "glx";
dithered-present = false;
vsync = true;
mark-wmwin-focused = true;
detect-rounded-corners = true;
detect-client-opacity = true;
detect-transient = true;
use-damage = false;
log-level = "warn";
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};
'';
};
}