New Picom w/ animations

Yshui just released a new version of picom with animations that are pretty stable. I have been using the Chaotic-AUR build since Sunday and really like the new rules and the animations are decent. I just would like to have more like KDE has (wobbly, genie lamp, fire…). I also would like to be able to set frame opacity and background opacity per application.

1 Like

Two things, is this pushed via picom-git on the AUR and is there documentation for those new rules and animations?

i am using this for a longer time now… very stable too:

local/picom-ftlabs-git 2236_2024.02.17-1
    picom fork by FT-Labs including animations (git-version)

It is in the AUR as picom or from Chaotic-AUR repository as picom-git. The rules and animations are explained on yshui’s github under the next branch. I have a working version, but it is not totally to where I want it for my setup.

###################
# Animations
###################
# animations = (
#     {
#         triggers = [ "open", "show" ];
#         preset = "fly-in";
#         direction = "right";
#         duration = 1;
#     },
#     {
#         triggers = [ "close", "hide" ];
#         preset = "slide-out";
#         direction = "down";
#         duration = 1;
#     },
# )

###################
# Shadow
###################
shadow = true;
shadow-radius = 12;
shadow-opacity = 0.8;
shadow-offset-x = -7;
shadow-offset-y = -5;
#shadow-red = 0.141176;
#shadow-green = 0.156863;
#shadow-blue = 0.219608;
shadow-color = "#c0caf5"
crop-shadow-to-monitor = true;
# shadow-exclude = [
#     "! name~=''",
#     "name = 'Notification'",
#     "name = 'Plank'",
#     "name *= 'VLC'",
#     "name *= 'picom'",
#     "name *= 'Chromium'",
#     "name *= 'Chrome'",
#     "class_g = 'Firefox' && argb",
#     "class_g = 'Conky'",
#     "class_g = 'Synapse'",
#     "class_g = 'Xfce4-panel' && window_type = 'dock'",
#     "class_g = 'firefox' && argb",
#     "window_type = 'tooltip'",
#     "window_type = 'menu'"
# ];


###################
# Fading
###################
# fading = true;
# fade-in-step = 0.04;
# fade-out-step = 0.04;
# fade-delta = 5;
# no-fading-openclose = false;

###################
# Opacity
###################
frame-opacity = 1;
# opacity-rule = [
#     "100:window_type = 'tooltip'",
#     "90:class_g = 'Alacritty' && focused",
#     "70:class_g = 'Alacritty' && !focused",
#     "95:class_g = 'kitty' && focused",
#     "75:class_g = 'kitty' && !focused",
#     "90:class_g = 'Xfce4-terminal' && focused",
#     "70:class_g = 'Xfce4-terminal' && !focused",
#     "90:class_g = 'kate' && focused",
#     "70:class_g = 'kate' && !focused",
#     "100:class_g = 'easyeffects' && focused",
#     "70:class_g = 'easyeffects' && !focused",
#     "100:class_g = 'brave-browser' && focused",
#     "70:class_g = 'brave-browser' && !focused",
#     "100:class_g = 'betterbird' && focused",
#     "70:class_g = 'betterbird' && !focused",
#     "100:class_g = 'chromium' && focused",
#     "70:class_g = 'chromium' && !focused",
#     "70:class_g = 'Rofi'"
# ];

###################
# Corner
###################
# corner-radius = 12;
# rounded-corners-exclude = [
#     # "class_g = 'Dunst'",
#     # "class_g = 'Rofi'",
#     "window_type = 'dock'",
#     "window_type = 'desktop'",
#
# ];

###################
# Background blurring
###################
# blur-background-exclude = [
#     "name = 'plank'",
#     "window_type = 'dock'",
#     "window_type = 'desktop'",
#     "window_type = 'menu'",
#     "window_type = 'notification'",
#     "window_type = 'popup_menu'"
# ];
blur:
{
  kernel = "3x3box";
  method = "dual_kawase";
  size = 10;
  strength = 6;
};

###################
# Other
###################
detect-rounded-corners = true;
detect-client-opacity = true;
use-ewmh-active-win = true;
vsync = true;
dbe = false;
unredir-if-possible = true;
# focus-exclude = [ ];
detect-transient = true;
detect-client-leader = true;
daemon = true;
log-level = "warn";

###################
# Backend
###################
backend = "glx";
glx-no-stencil = true;
glx-copy-from-front = false;
glx-no-rebind-pixmap = false;
use-damage = true;
xrender-sync-fence = true;

###################
# Window type settings
###################
# wintypes:
# {
#     combo = {}
#     desktop = {}
#     dialog = {}
#     dnd = { shadow = false; }
#     dock = { clip-shadow-above = true; shadow = false; }
#     dropdown_menu = { opacity = 0.75; shadow = false; }
#     menu = { opacity = 1.0; }
#     normal = { blur-background = true; fade = true; focus = true; opacity = 1.0; shadow = true; }
#     notification = { blur-background = false; fade = true; focus = false; opacity = 1.0; shadow = true; }
#     popup_menu = { opacity = 1.0; }
#     splash = {}
#     tooltip = { fade = true; focus = true; full-shadow = false; opacity = 0.75; shadow = false; }
#     toolbar = {}
#     unknown = {}
#     utility = {}
# };

###################
# Rules
###################
rules = (
    {
        match = "focused";
        blur-background = true;
        corner-radius = 12;
        opacity = 1;
        shadow = true;
    },
    {
        focused = 0;
        blur-background = false;
        corner-radius = 12;
        opacity = 0.7;
        shadow = false;
    },
    {
        match = "window_type = 'dock' && focused";
        blur-background = false;
        corner-radius = 0;
        opacity = 1;
        shadow = false;
    },
    {
        match = "window_type = 'dock' && !focused";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.6;
        shadow = false;
    },
    {
        match = "window_type = 'dropdown_menu'";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.5;
        shadow = false;
    },
    {
        match = "window_type = 'menu'";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.5;
        shadow = false;
    },
    {
        match = "window_type = 'normal' && focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "fly-in";
                    direction = "right";
                    duration = 1;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "down";
                    duration = 1;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.9;
        shadow = true;
    },
    {
        match = "window_type = 'normal' && !focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "fly-in";
                    direction = "right";
                    duration = 1;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "down";
                    duration = 1;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.7;
        shadow = false;
    },
    {
        match = "window_type = 'notification' && focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "slide-in";
                    direction = "down";
                    duration = 1;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "up";
                    duration = 1;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.9;
        shadow = true;
    },
    {
        match = "window_type = 'notification' && !focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "slide-in";
                    direction = "down";
                    duration = 1;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "up";
                    duration = 1;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.7;
        shadow = false;
    },
    {
        match = "window_type = 'popup_menu'";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.5;
        shadow = false;
    },
    {
        match = "window_type = 'tooltip'";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.5;
        shadow = false;
    },
    {
        match = "class_i = 'plank' && focused";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.7;
        shadow = false;
    },
    {
        match = "class_i = 'plank' && !focused";
        blur-background = false;
        corner-radius = 0;
        opacity = 0.5;
        shadow = false;
    },
    {
        match = "class_g = 'kate' && focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "fly-in";
                    direction = "right";
                    duration = 1;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "down";
                    duration = 1;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.9;
        shadow = true;
    },
    {
        match = "class_g = 'kate' && !focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "fly-in";
                    direction = "right";
                    duration = 1;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "down";
                    duration = 1;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.7;
        shadow = false;
    },
    {
        match = "class_i = 'brave-browser' && focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "fly-in";
                    direction = "right";
                    duration = 3;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "down";
                    duration = 3;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.9;
        shadow = true;
    },
    {
        match = "class_i = 'brave-browser' && !focused";
        animations =
            (
                {
                    triggers = [ "open", "show" ];
                    preset = "fly-in";
                    direction = "right";
                    duration = 3;
                },
                {
                    triggers = [ "close", "hide" ];
                    preset = "slide-out";
                    direction = "down";
                    duration = 3;
                },
            );
        blur-background = true;
        corner-radius = 0;
        opacity = 0.7;
        shadow = false;
    },
)