Uniform look for Qt and GTK applications

From ArchWiki
Revision as of 23:57, 21 January 2008 by Zer0 (talk | contribs) (New page: Category:Desktop environments (English) Category:HOWTOs (English) Category:Eye candy (English) QT and GTK based apps both use different toolkits to rendering the user interfac...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

QT and GTK based apps both use different toolkits to rendering the user interface. Each of these UI's contain different themes, widgets, icons, etc.. and look different from each other. This article will help you make your QT and GTK apps look similar for a more streamlined desktop experience.

Theme Sets

Theme sets are themes distributed for multiple toolkits with the same overall look and feel in mind.


QtCurve is a theme set for QT, QT4, GTK1, and GTK2 based apps. "Four different themes, one uniform look". QtCurve themes can be found in the community repo. For example, to download the themes for QT (KDE) and GTK2 apps you would do the following.

pacman -Sy qtcurve-kde3 qtcurve-gtk2

To change the QT theme in KDE..

Control Center (kcontrol) --> Appearance & Themes --> Style --> Widget Style = QtCurve

To change the GTK2 theme..

Download gtk-chtheme from community repo.

pacman -Sy gtk-chtheme

run gtk-chtheme, select the QtCurve Theme. You can also change the GTK fonts to match your QT/KDE fonts and vice versa. Please note that any open applications may have to be restarted in order to see the changes.

Similar Themes

Similar themes are themes that look like each other but aren't necessarily from the same developers. You may have to do some minor tweaking to make them look the same. Below is a list of similar themes..

  • klearlooks (qt/kde); clearlooks (GTK2)

Theme Engines

These theme engines can be thought of as a thin layer API which translates themes between one or more toolkits. These engines add an extra layer of code in the mix and it can be argued that these solutions aren't as elegant as using native themes mentioned above.

GTK-QT Engine

The gtk-qt engine is for use by GTK applications running in KDE. It applies all Qt settings to the GTK application and uses Qt style plugins directly. Please note that on occasion this engine has rendering issues with some KDE themes.

pacman -Sy gtk-qt-engine

With it you can force GTK apps you use your KDE styles and font settings. You can access the engines settings at..

Control Center (kcontrol) --> Appearance & Themes --> GTK Styles and Fonts

In order to properly remove gtk-qt-engine you should delete the following files..

  • ~/.gtkrc2.0-kde
  • ~/.kde/env/gtk-qt-engine.rc.sh
  • ~/gtk-qt-engine.rc


The metatheme engine is designed as a thin layer between toolkits, creating a unified API by which each theme engine can draw. The result is that every application uses the same code for drawing, making the appearance same across different applications. This engine supports the GTK2, QT/KDE, and Java toolkits.

pacman -Sy metatheme

To install..


To configure settings..


To uninstall..

metatheme-install -u


How do I set themes for each toolkit?

You can use the following methods to change the theme used in each environment.

KDE and QT Themes
  • Control Center (kcontrol) --> Appearance & Themes --> Style --> Widget Style
  • kde-config --style [name of style]
  • qtconfig
  • gtk-chtheme
  • switch2 (gtk-theme-switch2 package)
  • switch (gtk-theme-switch package)

Themes not working in GTK apps

If the themes or theme engine you setup isn't showing in your GTK apps then it's likely your GTK settings files aren't being loaded for some reason. You can check where your system expects to find these files by doing the following..

export | grep gtk

Usually the expected files should be ~/.gtkrc for GTK1, ~/.gtkrc2.0 or ~/.gtkrc2.0-kde

Newer versions of gtk-qt-engine use ~/.gtkrc2.0-kde and set the export variable in ~/.kde/env/gtk-qt-engine.rc.sh If you recently removed gtk-qt-engine and are trying to set a GTK theme then you must remove ~/.kde/env/gtk-qt-engine.rc.sh and reboot. Doing this will ensure that GTK looks for it's settings in the standard ~/.gtkrc2.0 instead of ~/.gtkrc2.0-kde