I was working on my extensions some more today and decided I would venture out into a some new territory. The simple goal was to create a lightbox extension. The new territories was that we currently don't have any scripted actors that actually interact with the desktop windows, in particular the window stack. I found quite quickly that there is no sane way to currently do this.
The windows are easily accessible by code under global.window_group. We can add actors to that group and they show up behind windows as they should, temporarily. Within the compositor there is code that syncs the stack of actors with the stack of windows. It is never taken into account that there may be non-window actors within the group, which in turn ends up with all window actors always stacked below non-window actors. My temporary hack to get things "mostly" working is to continue to stack all actors to the bottom except the "top" window. This creates a stack like. top-window (focused? not all the time) non-window clutter actors (should they be in their own group?) rest-of windows This model mostly works because in general our window manager has a single focused window that is what we need to interact with. There are lots of nice corner cases like terminals that need 2 top windows because we draw the size box. These also tend to screw up the window stacking and re-draw. We also need to take into account windows pinned to "always on top", and where they fall into the equation. Before I get too deep into the waters I figured I would see if this is something that we even want to entertain supporting in mutter. Here is a quick video of the Lightbox extension, mostly working. http://www.youtube.com/watch?v=20mIDAURzO4 -Jon _______________________________________________ gnome-shell-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-shell-list
