aboutsummaryrefslogtreecommitdiffstats
path: root/picom.conf
diff options
context:
space:
mode:
Diffstat (limited to 'picom.conf')
-rw-r--r--picom.conf149
1 files changed, 149 insertions, 0 deletions
diff --git a/picom.conf b/picom.conf
new file mode 100644
index 0000000..6d003b9
--- /dev/null
+++ b/picom.conf
@@ -0,0 +1,149 @@
+# ╔══════════════════════════════════════════════════════════╗
+# ║ picom.conf ║
+# ╚══════════════════════════════════════════════════════════╝
+
+# ── Backend ──────────────────────────────────────────────────────────────────
+
+backend = "glx";
+
+# ── Vsync ────────────────────────────────────────────────────────────────────
+
+vsync = true;
+
+# ── Custom shader (gradient window borders) ───────────────────────────────────
+# Place gradient-border.glsl in ~/.config/picom/ then uncomment:
+window-shader-fg-rule = [
+ "/home/lanceb/.config/picom/gradient-border.glsl:focused"
+];
+glx-copy-from-front = false;
+use-damage = true;
+
+# ── Corner Rounding ───────────────────────────────────────────────────────────
+
+corner-radius = 5;
+
+# Exclude corners on certain window types (optional – comment out if unwanted)
+rounded-corners-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "class_g = 'Polybar'",
+ "class_g = 'Rofi'"
+];
+
+# ── Opacity ───────────────────────────────────────────────────────────────────
+
+# Unfocused windows get 0.8 opacity
+inactive-opacity = 0.8;
+
+# Focused / active windows are fully opaque
+active-opacity = 1.0;
+
+# Don't let applications override opacity via EWMH hints (set true to respect them)
+inactive-opacity-override = false;
+
+# Exclude certain windows from opacity rules
+opacity-rule = [
+ "100:window_type = 'dock'",
+ "100:window_type = 'desktop'",
+ "100:class_g = 'Rofi'",
+ "100:_NET_WM_STATE@:32a *= '_NET_WM_STATE_FULLSCREEN'"
+];
+
+# ── Background Blur ───────────────────────────────────────────────────────────
+
+blur-background = true;
+blur-method = "dual_kawase";
+blur-strength = 5;
+
+# Don't blur behind the desktop itself
+blur-background-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+# ── Shadows ───────────────────────────────────────────────────────────────────
+
+shadow = true;
+shadow-radius = 12;
+shadow-offset-x = -6;
+shadow-offset-y = -6;
+shadow-opacity = 0.6;
+
+shadow-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "_GTK_FRAME_EXTENTS@:c"
+];
+
+# ── Fading ────────────────────────────────────────────────────────────────────
+
+fading = true;
+fade-in-step = 0.03;
+fade-out-step = 0.03;
+fade-delta = 5;
+
+# ── Window Type Tweaks ────────────────────────────────────────────────────────
+
+wintypes:
+{
+ normal = { fade = true; shadow = true; };
+ tooltip = { fade = true; shadow = false; opacity = 0.9; focus = true; };
+ dock = { shadow = false; clip-shadow-above = true; };
+ dnd = { shadow = false; };
+ popup_menu = { opacity = 0.95; };
+ dropdown_menu = { opacity = 0.95; };
+};
+
+# ── Animations ───────────────────────────────────────────────────────────────
+
+animations = ({
+ triggers = ["open", "show"];
+
+ scale-x = {
+ curve = "cubic-bezier(0.22, 1, 0.36, 1)";
+ duration = 0.18;
+ start = 0.85;
+ end = 1;
+ };
+
+ scale-y = "scale-x";
+
+ offset-x = "(1 - scale-x) / 2 * window-width";
+ offset-y = "(1 - scale-y) / 2 * window-height";
+
+ shadow-scale-x = "scale-x";
+ shadow-scale-y = "scale-y";
+ shadow-offset-x = "offset-x";
+ shadow-offset-y = "offset-y";
+
+}, {
+ triggers = ["close", "hide"];
+
+ scale-x = {
+ curve = "cubic-bezier(0.4, 0, 1, 1)";
+ duration = 0.15;
+ start = 1;
+ end = 1.1;
+ };
+
+ scale-y = "scale-x";
+
+ offset-x = "(1 - scale-x) / 2 * window-width";
+ offset-y = "(1 - scale-y) / 2 * window-height";
+
+ shadow-scale-x = "scale-x";
+ shadow-scale-y = "scale-y";
+ shadow-offset-x = "offset-x";
+ shadow-offset-y = "offset-y";
+
+ opacity = {
+ curve = "linear";
+ duration = 0.15;
+ start = "window-raw-opacity-before";
+ end = 0;
+ };
+
+ shadow-opacity = "opacity";
+});
+