Uniform look for Qt and GTK applications

Qt and GTK based programs both use a different widget toolkit to render the graphical user interface. Each come with different themes, styles and icon sets by default, among other things, so the "look and feel" differ significantly. This article will help you make your Qt and GTK applications look similar for a more streamlined and integrated desktop experience.

Overview

To get a similar look between the toolkits, you will most likely have to modify the following:

  • Theme: The custom appearance of an application, widget set, etc. It usually consists of a style, an icon theme and a color theme.
  • Style: The graphical layout and look of the widget set.
  • Icon Theme: A set of global icons.
  • Color Theme: A set of global colors that are used in conjunction with the style.

You can choose various approaches:

  • Modify GTK and Qt styles separately with the tools listed below for each toolkit and aim for choosing similarly looking themes (style, colors, icons, cursors, fonts).
  • Use a special theme engine, which intermediates the modification of the other graphical toolkit to match your main toolkit.

Styles for both Qt and GTK

There are widget style sets available for the purpose of integration, where builds are written and provided for both Qt and GTK, all major versions included. With these, you can have one look for all applications regardless of the toolkit they had been written with.

Tip: You may want to apply user defined styles to root applications, see GTK#Theme not applied to root applications and Qt#Theme not applied to root applications.
Note: Since version 3.16, GTK 3 does not support non-CSS themes, hence previous solutions such as Oxygen-Gtk are no longer viable options.

Breeze

Breeze is the default Qt style of KDE Plasma. It can be installed with the breeze package for Qt5, the breeze-kde4AUR package for Qt4, and the breeze-gtk package for GTK 2 and GTK 3.

Once installed, you can use one of the many GTK configuration tools to change the GTK theme.

If running KDE Plasma, install kde-gtk-config and either run it from the command line, or log-out and log-in again and go to System Settings > Appearance > Application Style > Configure GNOME/GTK Application Style…. Fonts, icon themes, cursors, and widget styles set in System Settings affect GTK settings automatically; only the GTK theme should be set manually using the previously mentioned module.

Adwaita

Adwaita is the default GNOME theme. The GTK 3 version is included in the gtk3 package, while the GTK 2 version is in . adwaita-qt is a Qt port of the Adwaita theme. Unlike #QGtkStyle, which mimics the GTK 2 theme, it provides a native Qt style made to look like the GTK 3 Adwaita. It can be installed with the , and packages (it might require some time for compiling) for the Qt 4, 5 and 6 versions, respectively.

To set the Qt style as default:

  • For Qt4, it can be enabled with Qt Configuration (qtconfig-qt4), choose adwaita under Appearance > GUI Style. Alternatively, edit the /etc/xdg/Trolltech.conf (system-wide) or (user-specific) file:

Theme engines

A theme engine can be thought of as a thin layer API which translates themes (excluding icons) between one or more toolkits. These engines add some extra code in the process and it is arguable that this kind of a solution is not as elegant and optimal as using native styles.

Kvantum

Kvantum () is a customizable SVG-based theme engine for Qt5 that comes with a variety of built-in styles, including versions of some of popular GTK themes such as Adapta, Arc, Ambiance, Libadwaita and Materia. More themes can be found on the KDE Store.

Kvantum is treated as a style instead of a platform theme. To set Kvantum for all qt applications using environment variables, issue .

Theme configuration

To configure a theme variant for Kvantum, such as KvLibadwaita, edit the configuration file:

QGtkStyle

This Qt style uses GTK 2 to render all components to blend in with GNOME and similar GTK based environments. Beginning with Qt 4.5, this style is included in Qt. It requires gtk2 to be installed and configured.

This is the default Qt4 style in Cinnamon, GNOME and Xfce, and the default Qt5 style in Cinnamon, GNOME, MATE, LXDE and Xfce. In other environments:

  • For Qt4, it can be enabled with Qt Configuration (qtconfig-qt4), choose GTK under Appearance > GUI Style. Alternatively, edit the /etc/xdg/Trolltech.conf (system-wide) or (user-specific) file:
~/.config/Trolltech.conf
...
[Qt]
style=GTK+
...
  • For Qt 6, it can be enabled by installing and choosing the qt6gtk2 style in , or alternatively setting the following environment variable:

For full uniformity, make sure that the configured GTK theme supports both GTK 2 and GTK 3. If your preferred theme has inconsistent rendering after configuring Qt to use GTK2, install and choose a theme.

QGnomePlatform

This Qt 5 platform theme applies the appearance settings of GNOME for Qt applications. It can be installed with the or packages or the and qgnomeplatform-qt6-gitAUR packages for the development version. It does not provide a Qt style itself, instead it requires a style that support both Qt and GTK.

This platform theme is enabled automatically in GNOME since version 3.20. For other systems, it can be enabled by setting the following environment variable: .

Tips and tricks

Using a GTK icon theme in Qt apps

If you are running Plasma, run and select the icon-theme under System Settings > Application Style > GTK.

If you are using GNOME, run dconf-editor and change the key under org > gnome > desktop > interface to your preferred icon theme.

If you are not using a Desktop environment, for example if you are running a minimal system with , install dconf-editor and set the icon-theme as explained above. You might also have to set the value of in your profile. See Environment variables#Defining variables for the possible ways to obtain the desired result.

Add Title bar and frame to GTK3 applications under KDE Plasma

To have Gnome/GTK applications display with a KDE/Plasma title bar and frame, install and restart your window manager to load the updated library path.

You can also run Gtk application with the wrapper:

$ gtk3-nocsd gedit

Improve subpixel rendering of GTK apps under KDE Plasma

See Font configuration#LCD filter.

Consistent file dialog under KDE Plasma

In order to have the same file dialog, one can use XDG Portals.

Install xdg-desktop-portal and and set environment variable.

Note that currently not all GTK applications support KDE file dialogs correctly.

Applications using electron should use at least electron 14 (see #19159) and properly implement this function.

VSCode has a pull request for fixing a problem, see #126113.

GIMP has not implemented use of the portal yet, see bug report.

Troubleshooting

Themes not working in GTK apps

If the style or theme engine you set up is not showing in your GTK applications then it is likely your GTK settings files are not 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 for GTK1 and or for GTK 2.x.

GTK apps do not use svg (breeze) icons after system upgrade

Try to run this to fix this issue:

# gdk-pixbuf-query-loaders --update-cache

Flatpak Qt apps do not use Gnome Adwaita dark theme

If you switched your theme to Adwaita-dark and Flatpak Qt applications still use the light version, install the required KStyle:

# flatpak install flathub org.kde.KStyle.Adwaita

Qt apps run on GNOME Wayland have a non-matching window decoration look, even after setting a Qt theme

In order to have a matching window decoration look, you have to install , and set the following environment variable: QT_QPA_PLATFORMTHEME='gnome' This fix is guaranteed to work with Adwaita or Adwaita-dark.

GTK apps do not fully use KDE system settings

To further integrate Plasma settings on GTK apps, one may want to install , and gsettings-qt. This will offer proper Qt bindings for GTK.

kde-gtk-config "System Settings > Application Style > GTK" menu missing

When kde-gtk-config breaks and the "Application Style > GTK" menu is missing from System Settings, it is possible to choose GTK configuration tools like to be able to configure GTK 2 and GTK 3 styles. It is desktop independent even if it comes from the LXDE project (it does not require other parts of the LXDE desktop).

Dolphin theming does not match Nautilus well

Check the section Mismatched folder view background colors for how to deal with weird coloring.

gollark: Should only humans have multiple?
gollark: Some people have multiple moderator roles.
gollark: It's DESIGNED to do that?
gollark: Autonomously.
gollark: Possibly! I could actually go and apply the moderation thing to EVERYONE here.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.