Hey everyone,
I'm really excited about being able to use CSS to define the way a GTK+ theme looks. I've had my hand in making GTK+ themes in the past and know CSS pretty well, so this is a perfect intersection for people like me. (:
Sorry I couldn't make it out to GUADEC to talk with you all about this in person, but hopefully I can provide some help through emails and possibly on IRC, etc.
A quick list of things that I would really like
- keep as close to the CSS spec as possible (especially pay attention to CSS3, as it has lots of useful things)
- it is okay to use CSS extensions where CSS has a few gaps, especially since this is theming widgets, not web pages (although try to keep them down to a minimum)... something like: -theme-appearance: button; (similar to -moz-appearance [1])
- make a "page" that shows off all the "widgets", as well as common combinations (like nesting, etc.), and make it easy to "reload"... this doesn't really have to be a page, but something like this is a really nice thing when styling using CSS for a web page
- leave the padding up to the CSS style, based on relationships of widgets
- start from scratch, with no appearance defined whatsoever, but have a common styling that themes inherit from so that they can instantly define buttons, etc.
- support as many useful selectors & pseudo-classes as possible
- make sure cascading applies
- take advantage of the ability to use multiple classes on an element...
- HTML: <a class="foo bar baz">
- CSS: foo {}, bar {}, and baz {} would all apply to the above HTML
- applications should have a top-level id, so someone could do something like this:
- #gimp #toolbox button { -theme-appearance: button-small; border: none; }
- #gimp #toolbox button:selected { background-color: Highlight; color: HilightText; }
- #gimp #toolbox button:hover:selected { background-color: HighlightHover; color: HilightTextHover; }
- (I'm adding these extra states to show how things would work in other ways too)
- support CSS variables [2]
- have an introspection utility like Firebug so that theme authors and application developers can easily click widgets and explore an application by browsing around something like a DOM tree, with widget properties and such... once upon a time there was something that was sort of like this (called GLE [3]), which sort of worked, and then was not maintained and shortly bitrotted
- if this could be made at a lower-level than GTK+ itself, it would be nice... then GTK+ could call on this library to do the widget rendering, but so could Mozilla, OOo, and even Qt (which does this for non-UNIXy platforms like Windows and OS X already)... also, this might make adoption for things like custom Mono widgets (as in Banshee), Mono's WinForms, Wine, and even currently not-really-themable toolkits (Tk, Lesstif, etc.) easily possible
References- -moz-appearance: http://developer.mozilla.org/en/docs/CSS:-moz-appearance
- CSS variables: http://disruptive-innovations.com/zoo/cssvariables/
- GLE: http://testbit.eu/~timj/historic/gle/