Universal themes: a proposal

François Revol revol at free.fr
Fri Mar 19 17:58:55 PDT 2010


> I've uploaded the draft specification the freedesktop.org's wiki. I 
> hope
> that's acceptable to everyone.
> http://www.freedesktop.org/wiki/UniversalThemes
> I have received a bit of feedback on my blog post, which is again:
> http://epidermis.tuxfamily.org/blogs/flimm/10/02/04/universal-themes-an-idea
Sorry I really didn't have time to dig it...
I've been thinking about a cross-platform theme format for a while 

Though I just hope it won't get too X11-specific, ideally it would be 
usable by Haiku and others like AROS and ReactOS maybe.

Some comments of what I read:
- xml: hmm ugh, well... yeah I've yet to learn how to use libxml2...
- new mimetype & ext: fine, I can even have Haiku's Themes to 
explicitely support it with the mime db.
- .tar.gz: not my prefered format, plus it doesn't maintain xattrs (at 
least on Haiku, and not by default on Linux), but it probably doesn't 
matter much as most data will likely have to be converted anyway so it 
should be ok.
- no screensaver: well, we can always keep the name of the current 
screensaver, or a limited set of classic ones. (in Haiku Themes also 
saves the saver's settings (a serialized BMessage).)
- packaging: that's a feature I've yet to finish in Themes
- color categories: it's quite easy to pick the closest color in a 
palette from the base color of a theme, just need the smallest distance 
in the RGB colorspace, there is a formula for this... so an utheme 
exporter can do it automatically from desktop color for ex.
- another option for archiving is to use data: in the xml file, as is 
done in svg for bitmaps, cf. 
though that might not be usable for large bitmaps, but possibly 
cursors. It would complicate the xml some more though...
- things like icons would ideally be available in a vector format. 
Haiku uses HVIF because SVG is way too large to fit the inode 
small_data section (ZETA tried it and failed), it's possible to convert 
an SVG into HVIF, but it's not optimal... but I suppose this would have 
to do. Themes doesn't support changing icons yet anyway.

While it's useful to have target-ready files, I'd like to have as much 
as possible mapped into a format usable by others.
It might be nice to be able to extend an existing theme with another OS
/desktop version of it, to customize the OS-specific parts. The rest 
will always be "best effort" anyway.

Something else that might be useful is adding fonts, though it might be 
abused to include non-free fonts even unintentionally...

Btw, strings like name & desc don't mention an encoding, I suppose it's 
UTF-8 ;)

Also, in Themes I made it easy to choose which part we want to apply/
save (checkboxes per add-on), and made it extensible.

A list of existing OS/Desktops to check for theme formats:

 * Haiku
  * http://dev.haiku-os.org/browser/haiku/trunk/3rdparty/mmu_man/themes
  * http://www.haiku-os.org/blog/mmu_man/2008-01-25/the_bowels_of_the_theme_manager_or_how_to_make_haiku_as_ugly_as_zeta
  * http://www.haiku-os.org/blog/mmu_man/2008-02-01/even_more_themes
 * GNUstep & Etoilé (Camaelon):
  * http://etoileos.com/
  * http://aros.sourceforge.net/
  * http://aros-wandering.blogspot.com/
 * ReactOS
  * http://www.reactos.org/wiki/User:Mf/UIdeas/Themes

Things that could be made themeable:
 * sounds
 * terminal colors
 * dircolors


More information about the xdg mailing list