RE: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint

That makes sense to me, but also prompts me to make an additional point about this property:  why is not specified as a conventional window hint, as well a client message to request a change? 

The only way I was able to get this to work with Metacity was to map the window, pause a little with XSync() and then follow up with the client message.  That does work fine, but means there is a race that could cause a flicker as the window is first mapped on the WM's chosen default monitor and then moved.  Specifying it in the same way as _NET_WM_STATE, as both an initial property before initial (or first post-withdrawal) mapping, and a client message to change, would fix that and seems more consistent and logical.


From: wm-spec-list-bounces gnome org [mailto:wm-spec-list-bounces gnome org] On Behalf Of Jason 'vanRijn' Kasper
Sent: 05 November 2009 22:32
To: wm-spec-list gnome org
Subject: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint

re, all.

The EWMH spec does not provide a way to disable or "turn off" the _NET_WM_FULLSCREEN_MONITORS hint. In other words, whatever 4 monitor indices were last used for a fullscreen window will continue to be used ad infinitum, and the only current recourse for an app that has set this hint is to keep setting it every time it wants to fullscreen, even if it's only on a single head.

I've done a bit of testing with 2 heads and the latest Compiz, KWin, and Metacity window managers and it looks like it's possible to at least confuse these WMs into not using previous monitor indices for _NET_WM_FULLSCREEN_MONITORS by passing a -1 (0xFFFFFFFF) for the 4 monitor indices. I think what this is really doing is providing an invalid monitor index that doesn't (and can't possibly) exist in Xinerama, so it's ending up being not used by the WMs.

I'd like to propose that an addition be made to the EWMH spec that makes this the official route to asking the WM to disable the _NET_WM_FULLSCREEN_MONITORS hint for a given window. It seems to follow the spirit of both the existing _NET_WM_FULLSCREEN_MONITORS section as well as _NET_WM_DESKTOP (via using 0xFFFFFFFF as an otherwise invalid and special index).

I'd like to provide a patch to the spec to provide a way to completely turn off and disable the _NET_WM_FULLSCREEN_MONITORS after it's been set. I will provide a patch to the EWMH XML file (is wm-spec-1.4.xml the right one?), but before I do that, I wanted to check with the group on my approach. Does this approach (passing 0xFFFFFFFF as monitor indices in the XClientMessageEvent that is sent to the root window) sound good to everyone? Or would it be preferable to use a different approach?

The advantage I see to doing it this way would mean that what currently works via sending an invalid monitor index would be made the official spec standard and require only minor patches to the implementing WM's to document this as opposed to using some other mechanism which would require more intrusive rework.

Thanks in advance, all! =:)

-[ Jason 'vanRijn' Kasper    // ]-
-[ KDE PIM Developer         //  ]-
-[ bash fun -> :(){ :|:&};:  //  Numbers 6:22-26 ]-

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]