March 5, 2008

Icon herding gets easier with Tango Generator

Author: Nathan Willis

When you want to customize the look and feel of your Linux desktop environment, you can find many resources for altering window managers and interface widgets, but working with icons has always been more of an issue. Now you can get help with icons from a new program called Tango Generator.

The major Linux desktop environments (such as GNOME, KDE, and Xfce) adhere to an icon theme specification from That is excellent from a standardization point of view, but the specification gave individuals who wanted to create their own themes no alternative but to create the directories full of PNG and SVG files manually, and write theme configuration files by hand.

Tango Generator automates that process. It features a wizard that walks you through the process of selecting icons and packaging them into a theme that you can select just like the theme packages provided by your distro. Despite the name, it is not limited to use with icons from the Tango Desktop Project -- although it does link to a wide assortment of third-party icons that imitate the Tango Project's style.

Tango generation, lesson one

Tango Generator is a Python app and currently at version 0.3. From the download section of the software's Web site you can grab source, .deb, and .rpm packages, including different versions for Debian, Fedora, Linux Mint, PCLinuxOS, openSUSE, and Ubuntu. You can download a separate tarball package containing some pre-made theme configurations from the Configuration Files page, but you do not need them to get started.

When you launch Tango Generator, the welcome screen reports the presence of image manipulation utilities that the app needs in order to resize icons or convert between SVG and PNG behind the scenes. In most cases, you will not need to worry about the report, but if you get mysterious crashes, check the report to look for missing packages. Click on the Forward button to begin.

The next screen asks you to select what sort of icon theme to create. Version 0.3 supports the creation of only GNOME and Xfce icon themes (which are the same format), and you must click the checkbox next to that option to proceed. Author Mark Jones plans to add support for a variety of themeable applications (e.g., the GIMP or Inkscape), but has not added them to the public release yet. He is polling users' interest in adding KDE support.

The theme selector comes next. It is populated with an ordered list of source themes, each of which can be activated or deactivated with a checkbox. You create your custom theme by selecting only the source theme components you want, and rearranging them into the order that you wish them to take precedence. If two themes provide the same icon (perhaps something generic like the main menu icon), your custom theme will include the icon from the source highest in the list. Since many individual-created themes only focus on a subset of all the possible icons -- such as applications, but not devices or file types -- using multiple components is necessary to build a complete theme.

When you have made your selection, click Forward. The final screen allows you to name your creation and select a distro branding that provides distro logos in place of generic icons for items like the main menu. For GNOME themes, you can also choose to package the result in the older, GNOME 2.18-and-earlier format, but you will probably want to use the default setting for GNOME 2.20 and later. Click Forward one last time, and Tango Generator will fetch the requested icons, weed out duplicates, and package the result as an icon theme with the name you assign it, placing the result as a folder inside ~/.icons. Once it is there, you can select it from within GNOME's standard Appearance Preferences window.

Where we go from here

Tango Generator in its current form is pretty basic. Icon selection is limited to component packages in "all or none" fashion -- either your custom theme includes all of "Crazy Mike's Foo Iconset" or none of them. And although you can add additional source themes to the selection list via configuration files, it is currently an out-of-band operation -- you have to create the config file in another app, and there isn't yet documentation to walk you through the process.

More importantly, however, you do not get to see the individual icons within Tango Generator's interface. The component selection list gives a brief description of each package, but does not display in detail which icons each component contains or preview them visually. That feature would add a lot of usability, allowing you to make a quick sorting decision when two themes supply the same icon. As it is, the component themes are all public, and they change rarely enough that getting familiar with the ones you like isn't hard. But people outside the icon-junkie crowd would benefit from more information inside the app.

Jones is aware of Tango Generator's limitations. "In the long run, I plan to improve the underlying architecture so that theme lists can be updated from a repository and users will be able to add their own themes through the UI, as well as automatically regenerating obsolete themes," Jones says.

An artist himself, Jones created many of the extra icons provided in Tango Generator's Custom Application Icons source theme. But he has far less time to hack on Tango Generator itself, and has solicited help from translators and Python programmers on the project's discussion forum. "It's mostly finding a compromise between free time, what I'll personally get out of implementing them, and the demand among my user-base."

In spite of its current limitations, Tango Generator is on the right track. Compared to the degree of customization available with GNOME's window manager and GTK themes, icons have been short-changed for a long time. You can change or add individual launcher icons one by one, or swap out one entire theme for another, but nothing in between. Since icon themes are composed of dozens if not hundreds of individual, atomic entities, preserving your customizations across a distro upgrade and keeping multiple machines in sync is a headache. Tango Generator has a way to go before it reaches icon theming nirvana, but it is a welcome first step.


  • Desktop Software
Click Here!