Gtk themes

I won’t throw stones in the Gnome/KDE debate. KDE is obviously on a more robust development track, but I’ve always preferred the GTK approach for its speed and clean layout. It’s a drag that Patrick is no longer supporting it in Slackware, but Dropline is an excellent way to manage it.

Of course, the one thing Gnome lacks is the ability to change color-scheme on the fly. KDE, WindowMaker and even Blackbox have utilities for this, but not Gnome. You have to rely on individual static themes for that, and let’s face it, most of them are garish and poorly designed for everyday use.

One of the interesting forks of the GTK toolkit has been Xfce. Olivier Fourdan’s default theme has a nice, clean interface that strongly resembles the “Plastic” KDE theme (it works under Gnome. You can get the engine here.). The config file is well-written and easily hackable, and it’s what I use 98% of the time, so I’ve taken to writing variations to it.

Here are a few examples:

Stream

Diffusion

Girasole

You can download the individual themes here, or the whole tarball here. Individual themes are about 5K each, and the whole shebang is about 9.2K. To install individual ones, simply move them into ~/.themes/ or in the case of the tarball, save it to your home directory, and run:
tar xzvf xfce_variations.tar.gz

in which case they’ll all extract where they need to be.

The general structure is very simple. Each theme is its own directory, containing a subdirectory called gtk-2.0. In there, you’ll find the gtkrc file. Open it up and skip down to the second stanza, where you’ll find all the color information like this:

  • bg[ACTIVE] = "#ded7c3"
  • bg[INSENSITIVE] = "#ded7c3"
  • bg[NORMAL] = "#e3dcc8"
  • bg[PRELIGHT] = "#c48f47"
  • bg[SELECTED] = "#c48f47"

Those are all just hex values for the colors. Here’s a quick rundown of the major variables:

  • bg[NORMAL] the background for all widgets
  • bg[PRELIGHT] the background for menu and button mouseovers
  • bg[SELECTED] the color of the focused titlebar
  • bg[ACTIVE] scrollbar trough and depressed buttons
  • bg[INSENSITIVE] inactive buttons and tabs

From here, it’s pretty easy to plug in whatever you need.