A very, very brief journal entry. Metacity allows you to bind keys to horizontal and vertical maximisation of a window. Should this exist, since it’s so rarely used? Should there be a more easily-discoverable way of working? How would it work– right and middle and left click doing different things, as kwin does, or double-clicking the titlebar, or new buttons? There has been a lot of discussion about this on Bugzilla. Today your chronicler summarised the debate so far. Your two cents on the question are welcome; especially, I’m not sure how to gauge what proportion of people would actually use such a feature. (Lots of people will often tell you that they will use a feature, but you can hardly tell from that how many people don’t care.)
2008-01-12: For, indeed, the best medicine in life is a friend
Welcome back to the Metacity Journal; it’s been a month, and Christmas got in the way a little, so this will be rather a highlights reel.
Havoc has sorted all source files into subdirectories by purpose, which makes the structure of the program a lot cleaner.
Iain has fixed some bugs in the compositor about drawing shadows and other things.
Thomas has made a start on documenting every function using Doxygen. The current state of things is already quite useful for debugging, because you can use it to see which functions call which other functions. For examples of parts which are fully filled in, see:
There is an unstable release (2.21.8) due tomorrow. Also, is there anyone out there who would like to lend a hand with triage? As always, we love to hear from you about this or anything else.
(Post title thanks to Aelred of Rievaulx, who died on this day in 1167.)
Client attempts to deal with stacking order considered harmful
I was asked on IRC to explain why it is that programs mostly cannot raise their own windows.
The mechanism:
gtk_window_show() indirectly calls XRaiseWindow. This causes a ConfigureRequest X event. Metacity will only honour this if:
- the window belongs to the active application (but if there is no active application, any application can raise its windows), or
- there has been user activity in the new window more recently than in the active window
In all other cases it will ignore the request. If the request is to raise a window (rather than to lower it), it will set the attention hint on the window which was trying to raise itself.
The policy:
- Havoc noted in r460 that:
…in fact all client attempts to deal with stacking order are essentially broken, since they have no idea what other clients are involved or how the stack looks.
although that changeset did allow clients to raise themselves.
- After a discussion based partly on this, GNOME bug 166395 in February 2005 established a consensus that client attempts to deal with stacking order should be ignored; this was implemented in r1936.
- However, this left the program believing that it had alerted the user but with no change in the display, which was unhelpful. Therefore, in GNOME bug 305882 it was decided that when client attempts to deal with stacking order were ignored, the attention flag should be set instead; this was implemented in r2045.
This is not just GNOME being weird: here’s Lubos Lunak (the kwin maintainer) saying the same thing last year.
If you think this is a bad idea, figure out which part of it you think is a bad idea and then complain on that bug, or on wm-spec-list.
Start reading here
This is not the Metacity home page. There is no Metacity home page. This is for the same reason there is no flashy logo: Metacity strives to be quiet, small, stable, get on with its job, and stay out of your attention.
But this is a place where you can find out about Metacity. The maintainers and contributors post here, and we invite and provide feedback. So, what sorts of things can you expect to see here?
- Announcements of releases.
- The Metacity Journal appears semi-regularly, when things have been busy in the Metacity world. It discusses:
- notable changes to the code in the last day or so
- links back to people who have written about Metacity in their own blogs and discussion of what they say
- news articles mentioning Metacity
- activity on bugs (either on GNOME’s own bug tracker or downstream). These are often about issues which concern users, and you should always feel free to leave a comment giving your own opinion. We thrive on it.
- When there’s a lot of work being done on a particular sub-project, there will probably be regular posts on that project here. An obvious example was Iain’s compositor.
- anything else we think of.
- anything else you think of, possibly.
Comments on posts are open for the first few weeks, but are always moderated to keep the spammers away.
Photo credit: Li’l Bear. cc-by.
Ask us
Someone asked on IRC whether there had been a Metacity blog post about a certain thing they were interested in. There hadn’t been, but they were interested in seeing one, and I wondered what else people would like to see. So, ask us some questions (presumably questions about Metacity; if you want to know the date of the original constitution of Colorado there’s always Wikipedia :) ). People might answer them in the comments, and some of them might grow up to be fully-fledged posts. Of course you can always email us, too.
Some compositor issues
So, now that the compositor is in trunk and everyone is excited, this might be a good time to mention some “issues”.
Firstly, it seems that there are some weird shadow redrawing problems…these just appeared recently, so it shouldn’t be hard to find the offending commit. I think I know what it is, I just need to work out why its not working.
Next: Now that some windows have argb visuals some buggy themes may have translucent parts where there weren’t translucent parts before. Gilouche was one of these themes and Jimmac fixed it up recently. So if you start seeing through the window title bars, tell your theme author.
Also, I’ve been getting reports of terrible performance and rendering issues with xgl. It seems xgl doesn’t like any of the non-GL compositors, so I don’t know what to do about that.
Finally, on a happier note – a big thank you to whoever bought me stuff from my wishlist. Its much appreciated, even if it did take me two days before I noticed my parents had piled up my mail in a weird place while I was away…
2.21.5 is out, with the compositor
Thanks to Iain Holmes and Thomas Thurman for improvements in this version. This is the first unstable release to contain the new compositor; please try it out and let us know how it goes for you. Downstream maintainers should note that its GConf key is initially turned off in src/metacity.schemas.in and consider whether to turn it on by default in their packages.
- merge compositor branch! (Iain) (GNOME bug 499081)
- print “Subversion” and not “CVS” when building (Thomas)
Translations:
Jorge González (es), Kjartan Maraas (nb), Daniel Nylander (sv)
Source:
- 3d3ac7dc8e52981af032e35171789e60 metacity-2.21.5.tar.bz2
- eef55d7ce921b23d0749155876d53873 metacity-2.21.5.tar.gz
Photo: Footbridge over the River Ver, Hertfordshire, England. Photographer: Gary Houston. Public domain.
Compositor on trunk
Iain’s compositor is now on trunk since it now meets every requirement I wrote about here. It looks gorgeous. It will be in the next unstable release, which will happen before the weekend. Do not use bucket-o-bling any more; it is a dead branch. Work will continue on trunk. This closes GNOME bug 499081. All kudos goes to Iain.
When Iain’s compositor will be merged
Someone asked about this and I was going to tell them, but then I thought I’d say it here. I will merge Iain’s compositor branch when:
- there are no known
- large memory leaks
- security holes
- crashes
- it can be turned off entirely from ./configure and GConf
- when it is turned off in GConf or ./configure, the code paths are substantially the same as before the merge
- I actually compile it myself and see it working on a computer in front of me
- there are no smaller nitpicks like coding style and so on
So far most of these have been met, but not all at once. Note that “it all works perfectly” is not a criterion: it is important that it’s easily testable in standard unstable releases. On the other hand, “Metacity is as stable as before if you turn compositing off” is a very important criterion.
2007-12-11: just a quick roundup
A quick overview of where the action’s at in Metacity today. Not even a picture of a pub. As ever, dive in and discuss where you like, here or on bugzilla or on your own blog: we thrive on audience participation and we love to hear from you.
- GNOME bug 502644: a lot of people think the minimise/restore, and drag/resize wireframe animations are ugly, and ask to be able to turn them off in various combinations (other than the combinations you can already use).
It would be better to fix the animations, really: do any of you have any suggestions how they could look better?
Also, would anyone who doesn’t like the wireframe applications be happier once we have a working compositor anyway?
- GNOME bug 115584 (yeah, an old one): Someone wanted a way to name, and bind keystrokes to, a large number of workspaces. At the moment you can bind up to a dozen with gconf, although there’s no reason it shouldn’t be more. Thomas proposed a scheme to let users bind n instead. Havoc said it would be crazy to have 64 workspaces each with its own keybinding. Thomas conceded this point. I think this is heading towards WONTFIX territory.
- GNOME bug 436257: when you cancel a keyboard resize the arrows should be consistent whichever side you end on. We have a patch for this now.
- GNOME bug 430198: theme preview should have the theme’s name in the titlebar, shouldn’t it?
- GNOME bug 333548: Alex’s patch reviewed and is basically good; some fixups suggested
- GNOME bug 439749: someone supplies a patch to add “maximise vertically” and “maximise horizontally” to the list of things that can happen when you double-click a window; it is their first patch, and Thomas attempts to be friendly while also asking whether it’s worth adding in new code for a feature that probably nobody has ever wanted yet
- GNOME bug 501365: dead code removed; fixed
- GNOME bug 403148: looking for some memory leaks
- GNOME bug 499301: refactor which probably isn’t interesting to any of you
- GNOME bug 133896: handle some X errors more gracefully
Elijah and Iain: I am thinking of making this entire blog licensed cc-by-sa. What say you? Anyone else?