Adwaita is the default theme for GNOME and it means “The only One” in Bengali.
Creating a GTK+ Theme from Scratch
This isn’t a guide how to create a GTK theme, but some tips primary focused on how we can maintain compatibility in our themes when new GNOME versions are releasing. Theme authors are quitting theming because they cannot port their themes on the newer versions of GNOME.
This is both a fault of GNOME that doesn’t provide documentation for their CSS properties and pseudo-classes, plus a fault of authors which ignore the problem and they can’t deal with it later on.
1. Get Adwaita Default Theme
Never ever hack on someone’s else theme. Their bugs (there are bugs!) will also become yours, and it will be really hard to track them. Always download the default Adwaita and use it as your base. Get if from download server:
Or clone it from
Clean up the theme (remove the files you don’t need) and fix the main CSS files.
2. Apply Version Control
Place your theme in a directory
and initialize a new git. That will help you to track the changes you made, but most importantly you will use it as a pattern to create more themes.
Deploy it on Github!
3. Use Your Theme Daily
The only way to find out the bugs and misses is by using your theme daily. Link your development theme to
& (for GTK2)
4. Use A Good Editor For Editing Stylesheets
GEdit has a plugin for creating GTK3 Themes called Gedit-Cossa. Cossa is apparently broken on Fedora 20, so I go with Brackets. I prefer Brackets anyway. It is an awesome editor, plus it will help you in many more projects so it is a worth to learn using it.
5. Don’t Use Engines
Stay as close as possible to the upstream. Don’t use engines on GTK2 themes. Personally, I wouldn’t get bothered much with GTK2.
Just let the default Adwaita to handle GTK2, till you complete GTK3 and then spend some time on it.
6. Create Variations
Don’t create more themes than what you can really manage. Try to break CSS files on smaller parts and create different variations of your theme on different git branches.
That will reduce significantly portability to the newer versions of GNOME for all your themes.
7. Use Parasite & Widgets Factory
Use GTK Parasite and Gtk3-Widget-Factory to inspect GTK2 components and for live editing your changes. Another good testing is to check your theme on gtk3-demo application.
Remember: Some modules (eg Nautilus Gedit) have their own CSS files.
8. Track GTK Changes On GNOME.Next
Additionally you can create two clean clones of Adwaita 3.12 & 3.14 , apply 3.14 to 3.12 and see the changes.
9. Shipping The Theme
Don’t waste energy to make installation scripts or PPAs, it has not real benefits. Just zip the files the theme needs and upload it on Deviant Art and GNOME Look (for now!). Keep zip clean, don’t include more files than necessary, or editing instructions. Users don’t appreciate those.
Remember. You created branches for this reason. Ship your variations as different themes!
10. Release Soon, Update Often!
Did you make just a tiny tiny change? Release it!
Please try to keep a smart versioning. For example your major version, plus the date,
version 3.20140423 version 3.20140424 (minor) version 3.1.20140425 (average - avoid this!) version 4.20140425 (big - new GNOME version support / new variation / something important)
Finally add changelog with user-readable changes, a short description of the theme (plus d/l URLs) and your personal info, inside a text file.
Don’t forget to include what GNOME version your themes support!
11. Develop For GNOME.Next
Don’t use Virtual Machines for porting your themes to the next GNOME release (e.g GNOME 3.13.x). Use JHBuild! This is very essential, GTK is going to bring major changes, you should always be updated (3.13.92 / beta) before the final GNOME release!
You got a new theme? Review it, add some screenshots and email it to us at firstname.lastname@example.org. We are happy to publish it!