[Sawfish] Re: Preventing _NET_WM_STATE_ABOVE |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/sawfish Archives
]
Hi,
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.
Cheers,
GSR
--
Sawfish ML