The wider world of window border themes

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.

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.

(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.)

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].

“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.