[openbox] Bug: NETWM_CLIENT_LIST, NETWM_CLIENT_LIST_STACKING

Ben Jansens ben at orodu.net
Tue Dec 24 02:51:37 EST 2002


On Tue, Dec 24, 2002 at 01:19:42AM -0600, Ben Jansens wrote:
> On Mon, Dec 23, 2002 at 07:17:57PM -0600, Ava Arachne Jarvis wrote:
> > Openbox version 2.2.2 (and, as far as I know, all versions before that 
> > which were NETWM compliant).
> > 
> > This is the bug that is tripping up libwnck operation, which affects the
> > GNOME2 desktop and other libwnck related utilities, like devilspie[1],
> > and I don't blame it.  According to the NETWM specs:
> > 
> >   http://www.freedesktop.org/standards/wm-spec/x107.html
> >   3.2. _NET_CLIENT_LIST
> > 
> >   _NET_CLIENT_LIST, WINDOW[]/32
> >   _NET_CLIENT_LIST_STACKING, WINDOW[]/32
> > 
> >   These arrays contain all X Windows managed by the Window Manager.
> >   _NET_CLIENT_LIST has initial mapping order, starting with the oldest
> >   window. _NET_CLIENT_LIST_STACKING has bottom-to-top stacking order.
> >   These properties SHOULD be set and updated by the Window Manager. 
> > 
> > However, while Openbox (and, I imagine, Blackbox and Fluxbox code as
> > well) do put all windows into NET_CLIENT_LIST, NET_CLIENT_LIST_STACKING
> > only contains windows with an associated workspace -- which excludes
> > iconified windows.  Since these two lists are not the same in Openbox
> > when there are iconified windows, libwnck contains to wait for them to
> > be so (since a difference between the two lists is, by the specs, not a
> > stable state)[2].
> > 
> > That's why the pager/window list/devilspie/etc stop working when there's
> > something iconified in Openbox.
> > 
> > I would send in a patch, but I'm not sure how to fix this exactly.  I
> > think the iconified windows should go in at the bottom of the stacking
> > list, if only because I can't think of anywhere else they should go that
> > would be sane.
> > 
> > 
> > [1] Devilspie is a NETWM-compliant daemon that takes care of
> >     application-specific NETWM properties like stickiness, which 
> >     workspace(s) they're on, etc.  Very nice.  You can get read 
> >     a little more about it here:
> > 
> >       http://www.burtonini.com/computing/devilspie
> > 
> >     see the GNOME software map entry and download the tarball from here:
> > 
> >       http://www.gnome.org/softwaremap/
> > 
> >     and download Debian packages and source from here:
> > 
> >       http://www.burtonini.com/debian/
> > 
> > [2] Relevant code bits:
> > 
> >     - Screen.cc: updateClientList() versus updateStackingList()
> >         in particular, updateStackingList() does this:
> > 
> >         getCurrentWorkspace()->appendStackOrder(stack_order);
> >         for (unsigned int i = 0; i < getWorkspaceCount(); ++i)
> >            if (i != getCurrentWorkspaceID())
> >               getWorkspace(i)->appendStackOrder(stack_order);
> > 
> >         and never adds iconified windows separately.
> > 
> >     - Window.cc: BlackboxWindow::iconify()
> >         in particular, this line in this function 
> > 
> >           screen->getWorkspace(blackbox_attrib.workspace)->removeWindow(this);
> >       
> >         which leaves iconified windows with no workspace, and thus they 
> >         are not added in updateStackingList().
> > 
> 
> Wow thanks for the excellent report. Guess thats what was causing
> problems with the gnome panel. Woot. I'll have a fix out soon.
> 
> Ben

Fixed in the openbox-2_2 branch in CVS. If you could try it out and
confirm this for me I'd be much obliged. :)

Ben
-- 
I am damn unsatisfied to be killed in this way.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 232 bytes
Desc: not available
URL: <http://icculus.org/pipermail/openbox/attachments/20021224/3e7a7433/attachment.pgp>


More information about the openbox mailing list