Picom with animations - config for Mabox - try it!

Animation support has been added in the latest version of Picom (v12) :bangbang:

From today, you can easily try it in Mabox :slight_smile:

Quick how to:

  1. Fully update system:
yay
  1. Install needed files to your ~
mb-reset picom
  1. Select mabox-jaskier.conf as config for Picom.
    To do so, super + p to toggle picom, click Configure Picom button on notification.
    Then select mabox-jaskier.conf

Animations are enabled for:

  • windows - try to meve them around with super + Arrow or even better super + Keypad numbers
  • menus
  • Quake terminal F12
  • Quake PyRadio super + r

Also try super + d - toggle show desktop.

Thanks to @muzqs for the inspiration and providing the base configuration files :slight_smile:

Please let us know in comments if this work for you, how do you like it or not :wink:

1 Like

Jgmenu.conf to try, how it flows.


  • blur-background = true;
  • opacity = 0.85;
  • corner-radius = 2;
  • dim = 0.0;
  • shadow = true;

  • disappear (0.5)
  • fly-in (0.3)
  • scale (0.1)

Better to see it live. Really short impression :wink:

# JGMENU opacity and corner radius is controlled by jgmenu itself
# Maybe split animations to separate files?
match = "name = 'jgmenu'";
blur-background = true;
opacity = 0.85;
corner-radius = 2;
dim = 0.0;
shadow = true;
animations = (
    {
      triggers = ["close", "hide"];
      preset = "disappear";
      duration = 0.5;
      scale = 0.1;
      
      },
    {
      triggers = ["open", "show"];
      preset = "fly-in";
      direction = "right";
      duration = 0.3;
      scale = 0.1;
    }
  )


:bird:

#picom #jgmenu

Animations need to set to 1.0 opacity for the best result of the animation.

man picom

Important
If an output variable name is not defined in your animation script, it will take the
default value for whichever state the window is in. Specifically, if you don’t define an
opacity variable in the animation script for the “close” or “hide” trigger, a closed window
will, by default, have 0 opacity. So you will just see it disappear instantly. Oftentimes,
you will want to set opacity to 1 to make the window visible for the duration of the
animation.

Example Quake Term. (C - grave)

{
	match = "name = 'Quake Term'";
	corner-radius = 0;
        opacity = 1.0;
	animations = (
    {
      triggers = ["close", "hide"];
      preset = "fly-out";
      direction = "up";
      duration = 0.5;
    },
    {
      triggers = ["open", "show"];
      preset = "fly-in";
      direction = "up";
      duration = 0.5;
     }
  )
},

:bird:

1 Like

I created a GitLab repository to build a collection of configuration variations for testing purposes.

:bird:

EDIT:

Added skippy-xd-fix to mabox-rules:

{
    match = "class_g = 'skippy-xd-fix'";
    blur-background = false;
    opacity = 1.0;
    shadow = false;
    corner-radius = 0;
    opacity = 1.0;
},

I think it’s less clumpsie with these settings.

EDIT 2:

After I enabled the following in mabox-jaskier.conf.
Fulscreen without corners works now also for stremio. (Electron)

# 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.
#
# Default: false
unredir-if-possible = true;

:bird:

1 Like