exwm icon indicating copy to clipboard operation
exwm copied to clipboard

Apply shader selectively using picom

Open theottm opened this issue 10 months ago • 4 comments

Hi,

picom allows one to apply a shader to a specific window using a matching pattern, including name, window type, window state, etc. I am having a hard time finding how to match things properly in EXWM and I probably need a lower level understanding of how EXWM works. Maybe you can help me ?

It seems like what appears as a window is made of different layers. First the proper X window, then appearing under it, an emacs frame. It looks like the X window is associated to a buffer of that frame. Now I more or less see how I can manipulate these things in emacs, though I am not sure how I can access them from picom.

How can I match the emacs frame that is behind a window ? How can I match all the X windows without matching the underneath emacs frame ? Is there some attribute that distinguishes them, like _NET_WM_WINDOW_TYPE, or is one the child of the other, or any other way I could distinguish them ?

For example if I do picom --backend glx --window-shader-fg-rule invisible.glsl:'_NET_WM_WINDOW_TYPE@:a *= "NORMAL"' I can match all the X windows and the emacs frames, which seems to boil down to everything apart from polybar in my setting.

Cheers,

Théo

theottm avatar Apr 04 '24 09:04 theottm