[openbox] Bug: NETWM_CLIENT_LIST, NETWM_CLIENT_LIST_STACKING
Jason 'vanRijn' Kasper
vR at movingparts.net
Tue Dec 24 08:34:07 EST 2002
You rock, xOr! =:D Seriously.
Merry Christmas, all.
On Tue, 2002-12-24 at 02:51, Ben Jansens wrote:
> 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
--
,-----------------------------------------------------------------//
| Jason 'vanRijn' Kasper :: Numbers 6:22-26
`
| All brontosauruses are thin at one end, much MUCH thicker
| in the middle, and then thin again at the far end. That is
| the theory that I have and which is mine, and what it is too.
,
| bash$ :(){ :|:&};:
`----------------------//
More information about the openbox
mailing list