On Monday 06 June 2005 08:22, Nick Johnson wrote:
...AFAIK, unmapping windows upon desk
change is a peculiarity of fvwm.
So then, the question becomes, how can an X client (not an fvwm
module) look at an unmapped window and tell whether it is (A)
unmapped due to client behavior, or (B) unmapped by fvwm?
It's been a while since I've been active here, but I'll jump in and
give it a try, absent any input from Dominik.
First, for a little background, I took Mikhael's hint, and a little
Googling turned up this link to some WM Spec discussion that gives a
bit of background on large and virtual desktops, and some of the
rationale behind different ways of implementing them. (caveat: I'm not
so sure I agree with the writer's conclusion that unmapping is not
ICCCM-compliant.)
http://roguelife.org/~fujita/www.freedesktop.org/standards/wm-spec/x23.html
FVWM, of course, supports both large and virtual desktops, and the
map/unmap technique for handling virtual desks goes way back to the
original author, Rob Nation, before most of us had ever heard of FVWM.
The alternative approach of using virtual root windows (for either
multiple viewports or multiple desktops) was used, if I recall, by the
VTWM/TVTWM family of WM's. I can't recall who else used them -
Enlightenment, maybe. I think Rob shied away from the virtual root
technique because of some undesirable side effects, such as confusing
programs that try to locate the root window (to set images on the root,
or to locate their client windows' WM decorations).
So, on to your real questions...
I don't know whether there are currently any other WM's (other than
FVWM descendants) that use the map/unmap technique. Most don't try to
implement both large and virtual desktops, and so probably don't worry
about using different techniques.
I agree with Dan, I can't think of any way you could know for sure
whether a window had been unmapped by the client or by FVWM. In any
case, you'd have to determine what WM was running, and then have
special case knowledge for the case of FVWM. Even then, short of
running as an FVWM module and being able to look at the various window
flags, I'm not sure you could deduce everything you'd need to know.
What would you want to do differently in the cases of an unmapped
window that just happens to be on a different desk, and one that has
been iconified by the app...and also just happens to be on a different
desktop?
Cheers,
Bob