[Xlib] Saving state before an unmap

Glynn Clements glynn at gclements.plus.com
Mon Feb 16 14:02:06 PST 2009

Andrew Troschinetz wrote:

> >>> I think you should try to find somewhere a good description of  
> >>> what a window manager is, and specifically why it has 'manager' in  
> >>> its name - it is the window manager that is eventually in control  
> >>> of the windows and not the other way around. The more complicated  
> >>> things you try the more likely is that the window manager will  
> >>> have a different idea about it, so I suggest you instead consider  
> >>> to try to add your wanted features to your favorite window manager.
> >>
> >> Sigh. It's not productive for anyone here to be condescending.
> >
> > If that's what you call saying that things are the way things are. 
> > The window manager is eventually the one in control of all the
> > windows, hence the name, and applications just give hints and
> > requests. It is up to the WM to decide what to do with those and
> > whether at all. I'm sorry that somebody told you to dig a garden
> > with a pole, if the window managers you will use will be lenient
> > enough and you will not want too complex things it may work with
> > enough hacks, but it still doesn't change anything about the fact
> > that you're trying to dig a garden with a pole. But if you want to
> > find out on your own, fair enough.
> I don't believe the point you're making in any way addresses my  
> expressed goals. I would point out that 99% of the library I've  
> written to solve the issues I'm facing is exactly the functionality of  
> GNOME libwnck. From the description of the project libwnck is meant to  
> be "used to implement pagers, tasklists, and other such things." Which  
> is essentially what I'm trying to do. You wouldn't call being able to  
> raise a window by clicking on its icon in a pager digging a garden  
> with a pole, would you?

That depends upon whether you're letting the WM do this or trying to
do it yourself.

> Well instead of a pager I have a menubar, it's not that different.
> However libwnck is for GNOME, I am attempting to do something lower- 
> lever that will work (whenever possible or fail silently) on GNOME and  
> Motif (at the least -- however I would like to note that I have done  
> some cursory testing on KDE as well and it seems to work fine there  
> too).
> I realize that all I can do is set hints and make requests. However  
> those actions have concrete results in terms of WM response. The only  
> thing that matters to me is figuring out exactly how to prod the WM in  
> such a way as to get the responses I need.

You can't. You set hints and make requests; how (and even if) the WM
responds is up to the WM. The relationship between the hints and the
end result is intentionally vague.

> I'm sorry if it horrifies you that I'm making my WM work for me,
> rather than against me.

It's not *your* WM, it's the user's. The desktop is a shared resource;
it doesn't belong solely, or even primarily, to your application. Your
application makes requests which the WM may or may not honour,
depending upon competing requests from other clients, user
configuration, and a zillion other factors.

The best that you can do is to learn how to speak the WM's language,
so that you can ensure that your requests are heard and understood. 
You cannot ensure that your requests are honoured; this is deliberate.

The only way to obtain complete control is to write a WM. You cannot
realistically expect to force another WM to bend to your will.

Glynn Clements <glynn at gclements.plus.com>

More information about the xorg mailing list