The Metacity theme format has been roughly the same for six years now. Many people are quite happy with it as it is, but we fairly regularly get people coming along and asking why it can’t do this or that and how they can make it do so. The trouble is that changing the theme format is a fairly large upheaval, and not something we’d like to do much. Recently, two ideas have been put forward to change all that by making it not our problem to change the format if some newfangled idea comes about that we don’t support already.
- It’s GTK’s problem. Metacity doesn’t draw borders at all any more. This makes us a much more lightweight window manager, because all we’d have to do is keep out of people’s way and manage windows. It also means that the toolkit can interact more easily with the borders, leading to fun stuff like these Tango experiments. (Of course, this is a source of OOH SHINY, which gets people writing about GNOME more than anything else.) Or as alex-weej points out, we could do things like this using standard libraries. Downsides: non-GTK applications have a bit of a problem; we would obviously still need to figure out what we’re doing about window border theme file formats; all this will need a lot of coordination between people from different projects. However, it does have the seeds of great awesomeness within it.
- It’s librsvg’s problem. Make a new file format where everything is based on SVG files. Feed these into librsvg, substituting results of expressions as appropriate. There you have a simple format which can do anything librsvg can do, and keeps on growing as librsvg keeps growing. (This is all possible; I’ve done a little bit of test work here.) Allow no other instructions but a set of SVGs (I have the way to do this in my head if anyone’s interested, but I won’t bother writing this down if this is going to be a blind alley). Add a script which can take out an SVG so you can edit it with Inkscape. Disadvantages: it’s an evolution, not a revolution; it’s slower than the current system in tests (though I haven’t tried to optimise it); it doesn’t let us do all the fun stuff the other option does.
Your thoughts, Gentle Readers, both on the pros and cons of each and of the best choice? I shall be updating the post with your ideas, with attributions.
Photo: © swizzled, cc-by-nc-sa