- Uniform look for Qt and GTK applications
- Contents
- Overview
- Styles for both Qt and GTK
- Breeze
- Adwaita
- Theme engines
- Kvantum
- QGtkStyle
- QGnomePlatform
- Tips and tricks
- Using a GTK icon theme in Qt apps
- Add Title bar and frame to GTK3 applications under KDE Plasma
- Improve subpixel rendering of GTK apps under KDE Plasma
- Consistent file dialog under KDE Plasma
- Troubleshooting
- Themes not working in GTK apps
- GTK apps do not use svg (breeze) icons after system upgrade
- Flatpak Qt apps do not use Gnome Adwaita dark theme
- Qt apps run on GNOME Wayland have a non-matching window decoration look, even after setting a Qt theme
- GTK apps do not fully use KDE system settings
- _Application_Style_>_GTK»_menu_missing»>kde-gtk-config «System Settings > Application Style > GTK» menu missing
- Dolphin theming does not match Nautilus well
- Install themes arch linux
- Contents
- Installation
- Themes
- GTK and Qt
- Configuration tools
- Configuration
- Basic theme configuration
- Dark theme variant
- Keyboard shortcuts
- Emacs key bindings
- GNOME menu delay
- Reduce widget sizes
- Hide CSD buttons
- Disable mouse paste
- File-chooser start-up location
- Legacy scrolling behavior
- Disable overlay scrollbars
- Remove overlay scroll indicators
- Examples
- GDK backends
- Wayland backend
- Xorg backend
- Broadway backend
- Troubleshooting
- Different themes between GTK 2 and GTK 3 applications
- Theme not applied to root applications
- Client-side decorations
- cedilla ç/Ç instead of ć/Ć
- Suppress warning about accessibility bus
- Titlebar background color mismatch
- Wrong focus events with tiling window managers
- Thumbnail support for GTK file dialog
- Button and menu icons
- GTK 3 without polkit
- Some GTK 2 themes only change the UI color palette
- Patching GTK file chooser to use regular type ahead
- Text in GTK 4 applications is blurry or renders incorrectly
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.
Contents
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.
Breeze
Breeze is the default Qt style of KDE Plasma. It can be installed with the breeze package for Qt5, the breeze-kde4 AUR 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 gnome-themes-extra . 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 adwaita-qt4 AUR , adwaita-qt5 and adwaita-qt6 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
/.config/Trolltech.conf (user-specific) file:
- For Qt 5, it can be enabled by setting the following environment variable: QT_STYLE_OVERRIDE=adwaita . Alternatively, use qt5ct package. For more detailed instructions, see Qt#Configuration of Qt 5 applications under environments other than KDE Plasma.
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 ( 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 QT_STYLE_OVERRIDE=kvantum .
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
/.config/Trolltech.conf (user-specific) file:
- For Qt 5, it can be enabled by installing qt5-stylepluginsAUR and setting the following environment variable: QT_QPA_PLATFORMTHEME=gtk2
- For Qt 6, it can be enabled by installing qt6gtk2AUR and choosing the qt6gtk2 style in qt6ct , or alternatively setting the following environment variable: QT_QPA_PLATFORMTHEME=gtk2
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 gtk-theme-switch2 AUR 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 qgnomeplatform-qt5 or qgnomeplatform-qt6 packages or the qgnomeplatform-qt5-git AUR and qgnomeplatform-qt6-git AUR 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: QT_QPA_PLATFORMTHEME=gnome .
Tips and tricks
Using a GTK icon theme in Qt apps
If you are running Plasma, run kde-gtk-config and select the icon-theme under System Settings > Application Style > GTK.
If you are using GNOME, run dconf-editor and change the icon-theme 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 i3-wm , install dconf-editor and set the icon-theme as explained above. You might also have to set the value of DESKTOP_SESSION 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 gtk3-nocsd-git AUR and restart your window manager to load the updated library path.
You can also run Gtk application with the wrapper:
Improve subpixel rendering of GTK apps under KDE Plasma
Consistent file dialog under KDE Plasma
The factual accuracy of this article or section is disputed.
In order to have the same file dialog, one can use XDG Portals.
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.
Alternatively, use bookmarksync-git AUR for that purpose. There you can manually edit and sync bookmarks to both sides.
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..
Usually the expected files should be
/.gtkrc for GTK1 and
/.gtkrc2.0-kde for GTK 2.x.
GTK apps do not use svg (breeze) icons after system upgrade
Try to run this to fix this issue:
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:
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 qgnomeplatform-qt5 , 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 gnome-settings-daemon , gsettings-desktop-schemas and gsettings-qt . This will offer proper Qt bindings for GTK.
_Application_Style_>_GTK»_menu_missing»>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 lxappearance 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.
Install themes arch linux
GTK, or the GIMP Toolkit, is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK is suitable for projects ranging from small one-off tools to complete application suites.
GTK, The GIMP Toolkit, was initially made by the GNU Project for GIMP, but it is now a very popular toolkit with bindings for many languages. This article will explore the tools used to configure the GTK theme, style, icon, font and font size, and also detail manual configuration.
Contents
Installation
Multiple versions of GTK are currently available. They can be installed with the following packages:
- GTK 4.x is available with the gtk4 package.
- GTK 3.x is available with the gtk3 package.
- GTK 2.x is available with the gtk2 package.
- GTK 1.x is available with the gtkAUR package.
Themes
In GTK 3 and GTK 4, the default theme is Adwaita, but HighContrast and HighContrastInverse themes are also included. In GTK 2, the default theme is Raleigh, but Arch Linux has a custom configuration file at /usr/share/gtk-2.0/gtkrc , which sets the default theme to Adwaita.
To force a specific theme, set the following environment variables:
- For GTK 3 and GTK 4, use GTK_THEME . For example to launch GNOME Calculator with the dark variant of Adwaita:
- For GTK 2, use GTK2_RC_FILES . For example to launch GIMP with the theme Raleigh:
More themes can be installed from the official repositories or the AUR. Manually extracted themes go in
Themes supporting GTK 2 and GTK 3:
- Adapta — An adaptive GTK theme based on Material Design Guidelines. Includes: Adapta, Adapta-Eta, Adapta-Nokto, Adapta-Nokto-Eta
https://github.com/tista500/Adapta || adapta-gtk-theme
- Arc — A flat theme with a modern look and transparent elements. Includes: Arc, Arc-Dark, Arc-Darker
https://github.com/jnsh/arc-theme || with transparency: arc-gtk-theme , without transparency: arc-solid-gtk-theme
- Bluebird — Blue Desktop Suite for Xfce.
https://github.com/shimmerproject/Bluebird || xfce-theme-bluebirdAUR
- Breeze — GTK version of KDE’s default widget theme. Includes: Breeze, Breeze-Dark
https://invent.kde.org/plasma/breeze-gtk || breeze-gtk
- Deepin — Default theme for the Deepin desktop. Includes: deepin, deepin-dark
https://github.com/linuxdeepin/deepin-gtk-theme || deepin-gtk-theme
- GNOME Extra Themes — Extra themes for the GNOME desktop. Includes: Adwaita, Adwaita-dark, HighContrast
https://gitlab.gnome.org/GNOME/gnome-themes-extra || gnome-themes-extra
- Greybird — A grey and blue Xfce theme, used by default in Xubuntu 12.04.
https://github.com/shimmerproject/Greybird || xfce-theme-greybirdAUR
- Materia — A Material Design-like flat theme for GTK3, GTK2, and GNOME-Shell.
https://github.com/nana-4/materia-theme || materia-gtk-theme
- MATE Themes — Default themes for the MATE desktop. Includes: BlackMATE, Blue-Submarine, BlueMenta, ContrastHighInverse, Green-Submarine, GreenLaguna, Menta, TraditionalGreen, TraditionalOk
https://github.com/mate-desktop/mate-themes || mate-themes
- Numix — A flat and light theme with a modern look (GNOME, Openbox, Unity, Xfce). Includes: Numix
https://github.com/numixproject/numix-gtk-theme || numix-gtk-theme-gitAUR
- Vertex — Theme for GTK 3, GTK 2, Gnome-Shell and Cinnamon.
https://github.com/horst3180/vertex-theme || vertex-themesAUR
- Zuki — Themes for GTK, gnome-shell and more.
https://github.com/lassekongo83/zuki-themes || zuki-themesAUR
There are a number of additional GTK themes in the AUR, example: search for gtk-theme.
GTK and Qt
If you have GTK and Qt (KDE) applications on your desktop then you know that their looks do not blend well. If you wish to make your GTK styles match your Qt styles please read Uniform look for Qt and GTK applications.
Configuration tools
Most major desktop environments provide tools to configure the GTK theme, icons, font and font size, and manage these settings via XSettings:
- If you use Cinnamon, use Themes tool (cinnamon-settings themes): go to System Settings > Themes.
- If you use Enlightenment: go to Settings > All > Look > Application Theme.
- If you use GNOME, use GNOME Tweaks (gnome-tweaks): install gnome-tweaks .
- If you use MATE, use the Appearance Preferences tool (mate-appearance-properties): go to System > Settings > Appearance.
- If you use Xfce, use the Appearance tool: go to Settings > Appearance.
Other GUI tools generally overwrite the configuration files.
Both GTK 2 and GTK 3 are supported:
- KDE GTK Configurator — Application that allows you to change style and font of GTK 2 and GTK 3 applications.
https://invent.kde.org/plasma/kde-gtk-config || kde-gtk-config After installation, kde-gtk-config can be found in System Settings > Appearance > Application Style > Configure GNOME/GTK Application Style.
- LXAppearance — Desktop independent GTK 2 and GTK 3 style configuration tool from the LXDE project (it does not require other parts of the LXDE desktop).
https://wiki.lxde.org/en/LXAppearance [dead link 2022-09-18 ⓘ] || lxappearance-gtk3
- Oo-mox — Graphical application for generating different color variations of Numix and Flat-Plat themes (GTK 2 and 3), Archdroid and Gnome-Colors icon themes. Also allows generating pre-scaled GTK 2 themes for HiDPI displays.
https://github.com/actionless/oomox || themix-full-gitAUR
Only GTK 2 is supported:
Configuration
GTK settings can be specified manually in configuration files, but desktop environments and applications can override these settings. Depending on GTK version, these files are located at:
- GTK 2 user specific:
/.gtkrc-2.0
Basic theme configuration
To manually change the GTK theme, icons, font and font size, add the following to the configuration files, for example:
If the theme is not applied for GTK 3, use gsettings in addition:
Dark theme variant
Some GTK 3 themes contain a dark theme variant, but it is only used by default when the application requests it explicitly. To use dark theme variant with all GTK 3 applications, set:
Keyboard shortcuts
Keyboard shortcuts (otherwise known as accelerators in GTK) may be changed by hovering the mouse over the respective menu item, and pressing the desired key combination. To enable this feature, set:
Emacs key bindings
To have Emacs-like key bindings in GTK applications add the following:
For GTK3 also run:
XFCE has a similar setting:
The configuration files in /usr/share/themes/Emacs/ determine what the Emacs bindings are, and can be changed. Copying sections to the users
/.gtkrc-2.0 file allows for changes on a per user basis.
GNOME menu delay
This setting controls the delay between pointing the mouse at a menu and that menu opening. This delay is measured in milliseconds.
Reduce widget sizes
If you have a small screen or you just do not like big icons and widgets, you can resize things easily.
To have icons without text in toolbars (valid values), use
To use smaller icons, use a line like this:
Or to remove icons from buttons completely:
You can also remove icons from menus:
Hide CSD buttons
To remove the client-side decorations (CSD)[3] minimize and maximize buttons from gtk3 windows:
Disable mouse paste
To turn off pasting on middle mouse button click (aka PRIMARY):
File-chooser start-up location
Open the file-chooser within the current working directory and not the recent location. Normally the current working directory is the Home directory.
Change setting with the following command:
Add the following to
Legacy scrolling behavior
Prior to GTK 3.6, clicking on either side of the slider in the scrollbar would move the scrollbar in the direction of the click by approximately one page. Since GTK 3.6, the slider will move directly to the position of the click. This behaviour can be reverted in some applications by creating the file with the content below:
Disable overlay scrollbars
Since GTK 3.15, overlay scrollbars are enabled by default, meaning that scrollbars will be shown only on mouseover in GTK 3 applications. This behavior can be reverted by setting the following environment variable: GTK_OVERLAY_SCROLLING=0 . See Environment variables#Graphical environment.
Alternatively, overlay scrollbars can be disabled in the GTK 3 settings since GTK 3.24.9. To do so, the value of gtk-overlay-scrolling has to be set to false in the [Settings] section of the settings file:
GTK 4 will no longer support GTK_OVERLAY_SCROLLING . It has already been dropped from master. As of GTK 4, the overlay nature of the scrollbars is part of the toolkit. The blanket toggle has been removed to prevent developers from breaking applications that have not been tested with both combinations. To allow application developers to decide what their applications should look like, the toolkit instead provides a mechanism to opt-out or add a setting for users. The function gtk_scrolled_window_set_overlay_scrolling() can be used to enable/disable overlay scrolling on a per-application basis. Application developers can optionally use GSettings to have a user setting bound to the property.
Remove overlay scroll indicators
The positions of the overlay scrollbars are indicated by thin dashed lines in the application window. These dashed lines will be present even when overlay scrolling is disabled using the environment variable discussed in the section above. To remove the indicator lines, create the following file:
Examples
GTK example configurations:
GDK backends
GDK (the underlying abstraction layer of GTK) supports multiple backends to display GTK applications.
Wayland backend
The GDK Wayland backend is supported only by gtk3 and is the default backend when using Wayland display server.
Applications that use versions of GTK prior to gtk3 do not have Wayland support, and need to use Xwayland in order to run on a Wayland session using the X11 backend.
When using the Wayland backend, some variables are not sourced from settings.ini . Any key that is present in the GSettings schema org.gnome.desktop.interface are read from there instead of settings.ini .
An example of such variables are gtk-color-scheme and icon-theme , which must have their keys set with GSettings in order to theme GTK Applications under Wayland. Alternatively, if only the theme needs to be customized, the environment variable GTK_THEME can be set.
Xorg backend
If Xorg display server is in use, the backend defaults to x11 automatically.
It is possible to force GTK3 applications running on a wayland session to use the X11 backend through Xwayland by setting the environment variable GDK_BACKEND=x11 .
Broadway backend
The GDK Broadway backend provides support for displaying GTK applications in a web browser, using HTML5 and web sockets. [4]
When using broadwayd, specify the display number to use, prefixed with a colon, similar to X. The default display number is 0 (zero).
Port used by default
To Start applications
Alternatively can set address and port
Troubleshooting
Different themes between GTK 2 and GTK 3 applications
In general, if a selected theme has support for both GTK 2 and GTK 3, the theme will be applied to all GTK 2 and GTK 3 applications. If a selected theme has support for only GTK 2, it will be used for GTK 2 applications and the default GTK theme will be used for GTK 3 applications. If the selected theme has support for only GTK 3, it will be used for GTK 3 applications and the default GTK theme will be used for GTK 2 applications. Thus for application theme consistency, it is best to use a theme which has support for both GTK 2 and GTK 3.
You could find what themes installed on your system have both an GTK 2 and GTK 3 version by using this command (does not work with names containing spaces):
Theme not applied to root applications
As user theme files ( $XDG_CONFIG_HOME/gtk-3.0/settings.ini ,
/.gtkrc-2.0 ) are not read by other accounts, the selected theme will not apply to X applications run as root. Possible solutions include:
- Create symlinks, e.g
- Configure system-wide theme files: /etc/gtk-3.0/settings.ini (GTK 3) or /etc/gtk-2.0/gtkrc (GTK 2)
- Adjust the theme as root
- Use a settings daemon (this is what most desktop environments do). A desktop-agnostic variant using XSettings is available in the AUR under xsettingsd-gitAUR .
Client-side decorations
GTK 3.12 introduced client-side decorations, which move the title-bar away from the window manager. This may present issues such as double title-bars, no title-bar at all, double shadows with compositing enabled, or being unable to move a frozen application.
To remove the shadow and gap around windows (for example in combination with a tiling window manager), create the following file:
Note that if visual problems persist, you may want to use the GTK Inspector to find the offending elements as explained here [5].
To adjust the buttons in the header bar, use the gtk-decoration-layout setting. [6] The below examples removes all buttons:
To remove client-side decorations altogether, it is possible to use a patched library like gtk3-classic AUR or gtk3-nocsd-git AUR .
cedilla ç/Ç instead of ć/Ć
See [7], and [8] for a workaround using Xcompose (US international layout).
Suppress warning about accessibility bus
If you do not use any Gnome Accessibility features, you may receive warnings like:
To suppress these warnings, execute programs with NO_AT_BRIDGE=1 or set that as a global environment variable.
Titlebar background color mismatch
If you are using a window manager which uses a window decoration theme that mimics the GTK theme background color, you may find that the titlebar color no longer completely matches the application color in some GTK 3 applications. As a workaround, create the following file:
Wrong focus events with tiling window managers
Define GDK_CORE_DEVICE_EVENTS=1 to use GTK2 style input, instead of xinput2. [10]
Thumbnail support for GTK file dialog
Install gtk2-patched-filechooser-icon-view AUR and gtk3-patched-filechooser-icon-view AUR to have the option to view files as thumbnails instead of list in the GTK file chooser.
Button and menu icons
The factual accuracy of this article or section is disputed.
For some applications in GNOME’s Wayland session. Your
/.config/gtk-3.0/settings.ini file is misconfigured. This can happen if you try other GTK based desktop environments. These are the offending values:
Simply set them to 0 or remove the whole file to use GNOME defaults.
GTK 3 without polkit
GTK3 depends on polkit through colord, which is required for printing. However printing works fine without polkit installed; at least with a monochrome printer and package versions gtk3-print-backends=3.22.19-2 and colord=1.4.1-1.
Some GTK 2 themes only change the UI color palette
Depending on the theme of choice’s support for GTK 2, UI controls may still have the default Raleigh appearance, possibly with a different color palette. This is due to these themes requiring the GTK 2 Murrine engine, which is missing (GTK 2 programs should complain about it on their standard error output). Install the gtk-engine-murrine package.
Patching GTK file chooser to use regular type ahead
GTK file chooser uses the same type-ahead-find feature as GNOME/Files. This can be very jarring and does not fit in very well with other desktop enviroments.
Some applications support XDG-desktop-portal which allows application to use the native file chooser. If that does not work you can restore type-ahead functionality by using a patched GTK, for example gtk3-classic AUR .
Text in GTK 4 applications is blurry or renders incorrectly
GTK 4 switched to grayscale antialiasing without hinting when rendering fonts. A setting is available that will restore some of the GTK 3 behavior [11]. Subpixel antialiasing is not available.