New Theme API

The way to go forward seems to currently be that we deprecate the current GtkStyle API in 3.x and replace it with a new API. Compatibility code will then be removed in 4.x. Here are some tasks that need to be done (please keep sorted by the order they should happen in):

Please put your name down if you want to help out.




Create a page of GTK+ widgets (fix this tasks name)

(put link here)

Alberto Ruiz

Think about the artist's workflow when creating a theme. #workflow

Create a specification of how GTK+ widgets should be drawn #specification

Andreas, Alberto Ruiz, Benjamin Berg

Have the (above) specification for drawing reviewed by artists and other people #consistency

Andreas :-)

Create mockups of a new theme syntax #syntax

Create a mockup engine #mockup

not yet started

Benjamin and ?

Deprecate GtkStyle when in some 3.x version :-)

Here some improvements for GTK+ 2.x




Create an API for theme engines to dynamically create GtkRCStyles and set style properties on them

not yet started

Benjamin Berg


By thinking about the artists when designing the new theming system, we will be able to achieve a higher quality in the end. A powerfull system that could do almost anything is worst then a system that is easy to use but more limited.

Drawing Specification

To be able to achieve a consistent drawing model inside all GTK+ widgets we need to create a specification for each widget. This need to be checked for completeness and consistency. When this is getting further we should probably also define a set of guidelines for new and custom widgets.

Consistency in the new specification is very important. So it should be proofread by a couple of people.

Some things that need to be defined:

  • Basic set of colors that will be used by the themes and applications.


The idea is to create several mockups of how a new theme syntax can look like. The merits of the different ideas can then be discussed.

Mockup Engine

Creating a new theming API is a large amount of work. Getting it right at the first time even more. So what we are planning to do is to create a basic compatibility engine for GTK+ 2.x that tries to emulate (important aspects of) the new design. This way we can hopefully check whether our ideas are working out, or some fundamental problems exist.

Projects/GTK+/NewThemeApi/Roadmap (last edited 2013-11-22 15:36:50 by WilliamJonMcCann)