[Sawfish] Re: Preventing _NET_WM_STATE_ABOVE

[ Thread Index | Date Index | More lists.tuxfamily.org/sawfish Archives ]

geoff@xxxxxxxxxx (2020-08-31 at 1504.08 -0700):
> The Zoom application is very aggressive in its opinions of what should be on
> top of my screen; it frequently sets _NET_WM_STATE to _NET_WM_STATE_ABOVE,
> which results in the window's "depth" property being 2 and makes it
> impossible for me to put the window behind other, more important ones.  It
> even does that for its settings window!  Sigh.

Sawfish has Depth in the Placement tab (and Ignore stacking requests
in Other) of Matched Windows, so it can be done if I understood the
problem (and the program is not doing silly tricks). I guess you are
doing it via rc file instead of GUI.

> I would like to override that behavior.  I tried writing a window-matching
> rule that checked "Ignore stacking requests", but that didn't work.  I did
> figure out that (window-put w 'depth 0) does what I want, but I don't see an
> easy way to write a window matcher that invokes a function.
> Anybody have a suggestion?

Once running, that config is stored in variable match-window-profile
as ( [...]  (((WM_NAME . "foo")) (depth . -1) [...] ) [...] )
(sawfish-client real output, cropped to the right part) to make
windows named foo have depth -1. You want something like that, but 0
as value. ignore-stacking-requests is so the app is not brought to
front later.

Adapting the documentation example, with filler NAME and CLASS (use
xprop to figure right values):
(add-window-matcher '((WM_NAME . "FillerName")
                      (WM_CLASS . "^Filler/filler$"))
                    '((depth . 0)
                      (ignore-stacking-requests . t)))

Even if you dislike GUI, I would suggest creating one fake matcher
with everything enabled so you get examples of everything in the
custom file, as well as in sawfish-client. Remove it once you copy the
result for reference. Or check match-window.jl, it has
match-window-properties info.

Also you may use bindings to change the stacking (inside current
depth) and depth:
(bind-keys window-keymap "H-r" 'raise-window-and-transients)
(bind-keys window-keymap "H-d" 'lower-window-and-transients)
(bind-keys window-keymap "H-R" 'raise-window-depth)
(bind-keys window-keymap "H-D" 'lower-window-depth)
H- is Hyper key, d for down (just below the r key), upper case for big
change, FYI.


Sawfish ML

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/