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:

2 Likes

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

1 Like

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

Working with two displays, I noticed this is not working as expected.

  • Not a solution for fullscreen and no corners.

What this basically does is disable Picom when a window goes fullscreen.
(so no corners indeed this way)
Once the window returns to a non-fullscreen state, Picom effect is re-enabled.

:bird:

1 Like

Using @include.conf for Betterlockscreen – Finding the Right class_g

While setting up an @include.conf file for Betterlockscreen, I ran into an issue: I couldn’t use xprop to get the correct window class for the lock screen.

At first, I tried:

class_g = 'betterlockscreen'
class_g = 'Betterlockscreen'

…but neither worked. :face_with_raised_eyebrow:

After some searching, I found the answer on GitHub:
:small_blue_diamond: Betterlockscreen actually uses class_g = 'i3lock'! :man_facepalming:
(Source: GitHub Issue #177)

Hopefully, this saves someone else some time! :rocket:

betterlockscreen.conf

# xprop for betterlockscreen = "class_g = i3lock".
# Topic: https://github.com/betterlockscreen/betterlockscreen/issues/177
match = "class_g = 'i3lock'";
opacity = 0.8;
blur-background = false;
dim = 0.2;
shadow = false;

It’s quite nice to play with dim and opacity and background blur.

:bird:

1 Like

This is fantastic. I use the super key plus arrows to position windows as my lifeline. Now with the animations, I can really show off my computer!

2 Likes