WINDOW_TYPE_HINT_UTILITY windows are hard to find

Olivier Fourdan fourdan at xfce.org
Thu Apr 5 21:24:06 CEST 2007


Hi,

Chris Moore wrote:
> On 4/5/07, Olivier Fourdan <fourdan at xfce.org> wrote:
> 
>> As stated in the spec, the application may set the WM_TRANSIENT_FOR hint
>> indicating the main application window. If it does, then the windows will be
>> raised and kept on top of its parent window.
> 
> There can be multiple canvas windows open at a time, and we would want
> the dialog windows to be 'transient for' all of them.  ie. whichever
> of the canvases is clicked on, we want the dialog window(s) to be
> brought to the front as well.  Is it possible for a dialog window to
> be 'transient for' more than one window at a time?

Yes, it's called "transient for group". It's the standard way of 
implementing this, that would work on several window managers (although 
not all window managers support it).

The standard says:

/If the WM_TRANSIENT_FOR property is set to None or Root window, the 
window should be treated as a transient for all other windows in the 
same group. It has been noted that this is a slight ICCCM violation, but 
as this behavior is pretty standard for many toolkits and window 
managers, and is extremely unlikely to break anything, it seems 
reasonable to document it as standard./


>> One improvement could be to ignore the UTILITY type of windows unless the
>> WM_TRANSIENT_FOR is set.
> 
> But then all the dialog windows would appear in the task bar wouldn't
> they?  What I'm wanting is for them to not take up space in the task
> bar (for they are pretty much useless without a canvas window also
> being shown), but for them to pop up whenever any of the canvas
> windows is clicked on.  This is exactly what metacity is doing, by the
> way.

Yes, but the application doesn't implement the standard and it works 
with metacity because it implements that behaviour. Try with KDE (kwin), 
does it work? Standards are for that purpose...

>> That would definitely help with such applications. Can you open an terminal,
>> run "xprop|grep TRANSIENT" and click on one of the utility windows and check
>> if the WM_TRANSIENT_FOR is set?
> 
> It isn't.
> 
> $ xprop|grep -i -e transient -e window_type
> _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_UTILITY


Yes, that confirms what I just said above. BTW, why not posting the full 
result of the xprop command? Or even better, open a bug/feature request 
in bugzilla?

Cheers,
Olivier.




More information about the Xfce4-dev mailing list