[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