FT-Labs / picom

More than 10 unique animation supported picom fork (open window, tag change, fading ...)
Other
247 stars 32 forks source link

[Feature Request] disable animations for specific class or window type #19

Open HishamAHai opened 1 year ago

HishamAHai commented 1 year ago

It's not really a bug, but it could be awesome if you can add a feature to exclude specific classes or window types from being animated. I've been using this fork for less than a week on fedora 37 with AwesomeWM and seems to work flawlessly, and I know that it has a feature to change the animation for each window type. But I can't find an option to disable animations completely say for example of the menus, tooltips or dmenu.

FT-Labs commented 1 year ago

have you tried using

animation = "none";

It seems to work on my case

HishamAHai commented 1 year ago

have you tried using

animation = "none";

It seems to work on my case

I'll give it a try later today

Edit. I tried it with tooltips and menus and it does not work

wintypes:
{
tooltip = { animation = "none" }
};

Am I doing it right?

Darukutsu commented 1 year ago

I have another idea about having custom animation/disabling features per WM_CLASS. I don't know if this is problem of rofi, but it doesn't implement _NET_WM_WINDOW_TYPE or rather should say that window type is normal

Therefor wintypes:{...} isn't very suitable.

animation-for-open-window = [ "slide-up:class_g = 'rofi'" ];
animation-for-unmap-window = [ "slide-down:class_g = 'rofi'" ];
Darukutsu commented 1 year ago

I'm not sure why, appart from line win.c:2689:

if (ps->o.animations && ps->o.animation_for_unmap_window != OPEN_WINDOW_ANIMATION_NONE && ps->o.wintype_option[w->window_type].animation) {

because you certainly have return on win.c:1144:

    if (ps->o.wintype_option[w->window_type].animation == 0) {
        log_debug("Animation disabled by window_type");
        return false;
    }

anyway compare my diff

here is video how it works before and after fix (on bspwm):

https://user-images.githubusercontent.com/54768193/236637449-b05db8d2-7813-4916-9abb-2650839d4b98.mp4

fly-in animation are bit whacky when fast spamming but doesn't matter. Pls ignore vid-quality/fps :D.

sr-prog commented 1 year ago

have you tried using animation = "none"; It seems to work on my case

I'll give it a try later today

Edit. I tried it with tooltips and menus and it does not work

wintypes:
{
tooltip = { animation = "none" }
};

Am I doing it right?

Just wanted to say I tried something similar:

wintypes:
{
  notification = { animation = "none"; }
};

It doesn't seem to work for me either.

Also I don't know if this is related but I saw this error in the output every time a notification came while I had animation = "none"; set:

[ 06/07/2023 18:42:15.303 _gl_fill ERROR ] GLX error at line 706: GL_INVALID_FRAMEBUFFER_OPERATION

@FT-Labs

SeleneCosmia commented 1 year ago

I just tried this on Awesome window manager, and it's working perfectly without any issue.

Basically what I wrote was wintypes: { tooltip = { animation = none; ..<other-opts-here>.. }; }; ..so pretty much the same except I didn't put quotations around the option.

Maybe try unquoting your "none" option and see if that helps, sometimes it's something as simple as that.

@sr-prog @HishamAHai

FT-Labs commented 1 year ago

About

[ 06/07/2023 18:42:15.303 _gl_fill ERROR ] GLX error at line 706: GL_INVALID_FRAMEBUFFER_OPERATION

I could not solve why this issue is happening, I'm not an opengl expert. None works for me as well, but I will update both this option and general animation support soon

AllenWu233 commented 7 months ago

I really need this feature, for disabling animation for Fcitx5 :D

DDGRCF commented 7 months ago

I really need this feature for fcitx too

WuuBoLin commented 1 month ago

I am using this Picom fork w/ Xmonad, and it works perfectly but menus and dnd.

PR #41 fixes this, seems like its just because animation-exclude is missing in picom_options[]. After adding it, we can exclude Fcitx5 menus like any other exclude options.

Simply adding this to picom.conf.

animation-exclude = [
    "window_type *= 'dnd'",
    "window_type *= 'menu'",
    "window_type *= 'utility'",
];