{ config, pkgs, ... }: let vars = import ./variables.nix; in { # Picom compositor configuration # CRT-inspired effects: green glow shadows, transparency, blur, rounded corners services.picom = { enable = true; backend = "glx"; vSync = true; # Opacity settings opacity = 0.95; activeOpacity = 0.95; inactiveOpacity = 0.90; opacityRules = [ "90:class_g = 'Xfce4-terminal'" "90:class_g = 'xfce4-terminal'" "95:class_g = 'Thunar'" "95:class_g = 'Mousepad'" "90:class_g = 'Rofi'" "100:class_g = 'Firefox'" "100:class_g = 'Chromium'" ]; # Fading fade = true; fadeDelta = 5; fadeSteps = [ 0.028 0.03 ]; # Shadows - CRT green glow effect shadow = true; shadowOpacity = 0.6; shadowOffsets = [ (-15) (-15) ]; shadowRadius = 20; # CRT green glow color (hex format: #RRGGBB) shadowColor = "#00FF00"; shadowExclude = [ "name = 'Notification'" "class_g = 'Conky'" "class_g ?= 'Notify-osd'" "class_g = 'Cairo-clock'" "_GTK_FRAME_EXTENTS@:c" ]; # Blur settings blur = { enable = true; method = "dual_kawase"; strength = 6; }; blurExclude = [ "window_type = 'dock'" "window_type = 'desktop'" "_GTK_FRAME_EXTENTS@:c" ]; # Rounded corners - 12px radius cornerRadius = 12; roundedCornersExclude = [ "window_type = 'dock'" "window_type = 'desktop'" ]; # Window animations (picom-pijulius style) # Note: Standard picom may not support all animation options # If animations cause issues, these can be removed settings = { # Animation settings (if using picom-pijulius) animations = true; animation-stiffness = 200; animation-window-mass = 0.5; animation-dampening = 20; animation-clamping = false; # Animation for window open - slide down (CRT scan-line effect) animation-for-open-window = "slide-down"; # Animation for window close - slide up animation-for-unmap-window = "slide-up"; # Animation for transient windows - zoom animation-for-transient-window = "zoom"; # Focus/unfocus animations animation-for-prev-tag = "minimize"; animation-for-next-tag = "slide-down"; # Additional GLX backend settings glx-no-stencil = true; glx-no-rebind-pixmap = true; use-damage = true; # Detect settings detect-rounded-corners = true; detect-client-opacity = true; detect-transient = true; detect-client-leader = true; # Window type settings wintypes = { tooltip = { fade = true; shadow = false; opacity = 0.90; focus = true; full-shadow = false; }; dock = { shadow = false; clip-shadow-above = true; }; dnd = { shadow = false; }; popup_menu = { opacity = 0.90; shadow = true; }; dropdown_menu = { opacity = 0.90; shadow = true; }; }; }; }; }