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.)
- Most environments do not allow anything beyond very basic theming.
- Nobody uses external standards such as CSS or SVG, except insofar as programming languages are external standards.
Photo © scazon, cc-by.