After all this talk about theme formats, an overview of how they are handled in other window managers seemed in order. Your chronicler is no expert on most of these systems, so there may well be mistakes below.
- As you probably know, Metacity uses a complex and powerful (perhaps over-powerful) XML-based vector theme format.
- Matchbox uses a similar XML-based format, but the graphics are done using pixmaps.
- Openbox uses a complex system of hierarchical properties, and again the graphics use pixmaps.
- Emerald has a set of different engines each of which can be used to represent a theme in a particular way. For example, there is the pixmap engine for pixmap themes. Settings go into a keyfile called theme.ini shipped inside a gzipped tarball.
- KWin themes are either pixmap themes, or written in C++ and compiled.
- Compiz has no theming system of its own, but can use KWin, Emerald, or Metacity themes.
- Awesome allows themes written in Lua using its Beautiful library.
- Sawfish themes are written in Lisp.
- fvwm themes are written in its own custom scripting language. Here are some rather beautiful examples (which I think should be ported to Metacity).
- Enlightenment themes are in some strange binary format which your chronicler does not understand.
- icewm themes are pixmap-based.
- xfwm themes are also pixmap-based.
- twm and ratpoison do not support theming.
Feel free to add more in comments.
(And then of course there are two examples from outside the free desktop, which are so large they are easy to miss:
- OS X does not generally allow theming;
- MS Windows only allows very basic theming and no redefinition of window borders.
One reader contacted your chronicler offline to ask whether a theme editor, and indeed customisable themes, were not a white elephant, considering that most users of most computers in the world have no ability, and perhaps also no desire, to remodel their window borders.)
Conclusions:
- Most environments do not allow anything beyond very basic theming.
- Most of the other window managers rely either on pixmap theming or express their themes using a programming language. The middle ground of using vector graphics is unknown outside Metacity. (Of course, in the world of gnome-shell, we could always express themes in JavaScript, but expressing themes in code brings a whole raft of security implications of its own.)
- Nobody uses external standards such as CSS or SVG, except insofar as programming languages are external standards.
Photo © scazon, cc-by.
KWin also supports SVG themes, now. (http://kde-look.org/content/show.php/Aurorae+Theme+Engine?content=107158) It will be part of KDE 4.4
Oo– now that’s particularly interesting. Thank you.
If you put all this WMs on a timeline you’ll see rather distinct trend.
Coded > Pixmaps > Vector.
Theming isn’t a white elephant. I’m not so into it personally, but my mother, who is exceptionally ignorant of computers and has bad eyes (needs large text to be able to read), loves to mess with themes. Showing her what you could do with themes in Metacity/Gnome, as opposed to the shoddy “Appearence Settings” of XP was what made her ask for the switch, and she’s been happily using it ever since.
If XP allowed some form of theming that didn’t make your computer more ugly, I’m sure people would make use of it just as much as they change their desktop backgrounds.
I thought it was a little ironic that after following a link about metacity theming, I found a mostly unstyled blog :) It’s been a while since I did any web dev, so I put together a custom.css style[1]. You’re welcome to use it if you’d like; you can see what it looks like at [2].
[1] http://www.cs.purdue.edu/homes/smittal/blogs.gnome.org/metacity/files/custom.css
[2] http://www.cs.purdue.edu/homes/smittal/blogs.gnome.org/metacity/2009/07/16/the-wider-world-of-window-border-themes/index.html
I DIG metacity theming.
“MS Windows only allows very basic theming and no redefinition of window borders”
It’s been a (very) long time since I played with Windows XP themes, but I seem to recall that while Microsoft does not allow theming beyond the “choose one of these predefined themes”, that’s actually enforced by a file called “uxtheme.dll” that expressly ignores non-Microsoft theme files. You can download a patched “uxtheme.dll” with that check disabled, and any number of third-party theme files can then be installed.
I believe the theme file format is a Windows DLL containing pixmap resources for the various window parts, and some very basic metrics resources defining shapes; I don’t believe the themes have any executable code, and at any rate there’s not much a theme can do to the layout of a window (buttons are always the same size and in the same place, etc.)
Presumably Vista’s Aero UI has some entirely different system in place.