GTK+
Related articles
From the GTK+ website:
- 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 the GIMP but 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
Two versions of GTK+ are currently available in the official repositories. They can be installed with the following packages:
- 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+ 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. In GTK+ 3, the default theme is Adwaita.
To force a specific theme, you can set environment variables.
- For GTK+ 2, use the
GTK2_RC_FILES
environment variable, for example:
$ GTK2_RC_FILES=/usr/share/themes/Industrial/gtk-2.0/gtkrc gimp
- will launch GIMP with the Industrial theme.
- For GTK+ 3, use the
GTK_THEME
environment variable, for example:
$ GTK_THEME=Adwaita:dark gnome-calculator
- will launch GNOME Calculator with the dark variant of Adwaita theme.
More themes can be installed from the official repositories or the AUR.
Both GTK+ 2 and GTK+ 3 are supported:
- GNOME Standard Themes — Default themes for the GNOME desktop. Includes: Adwaita, HighContrast
- Orion — A modern and light GTK theme.
- MATE Themes — Default themes for the MATE desktop. Includes: BlackMATE, BlueMenta, Blue-Submarine, ContrastHigh, ContrastHighInverse, GreenLaguna, Green-Submarine, Menta, TraditionalGreen, TraditionalOk, TraditionalOkTest
- MATE Themes Extras — Collection of GTK2/3 desktop themes for MATE. Includes: DeLorean-Dark, DeLorean, GnomishBeige
- Numix — A flat and light theme with a modern look (GNOME, Openbox, Unity, Xfce).
- Vertex — Theme for GTK 3, GTK 2, Gnome-Shell and Cinnamon.
- Clearlooks-Phénix — GTK3 theme visually close to Clearlooks.
- Zukitwo — Themes for GTK, gnome-shell and more.
- Ceti-2 — Theme for GTK 3, GTK 2 and Gnome-Shell.
- Greybird — A grey and blue Xfce theme, used by default in Xubuntu 12.04.
- Gnome-breeze — A GTK theme created to match with the new Plasma 5 Breeze.
Only GTK+ 2 is supported:
- GTK+ Engines — Theme engines for GTK+ 2. Includes: Clearlooks, Crux, Industrial, Mist, Redmond, ThinIce
- Xfce Gtk+ Engine — Xfce Gtk+-2.0 engine and themes
- Oxygen-Gtk — Port of the default KDE widget theme (Oxygen) to GTK2
- Aurora Gtk Engine — Latest member of the Clearlooks family.
- Openbox Themes — Various themes for the Openbox window manager.
- QtCurve — A configurable set of widget styles for KDE and Gtk.
There are a number of additional GTK+ themes in the AUR: search for gtk-theme, search for gtk2-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 Tweak Tool (gnome-tweak-tool): install gnome-tweak-tool.
- 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 are 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://projects.kde.org/kde-gtk-config || kde-gtk-config
- After installation,
kde-gtk-config
can also be found in System Settings > Application Appearance > GTK.
- 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).
Only GTK+ 2 is supported:
- GTK-KDE4 — Application that allows you to change style and font of GTK+2 applications in KDE4.
- http://kde-look.org/content/show.php?content=74689 || gtk-kde4AUR
- After installation,
gtk-kde4
can also be found in System Settings > Lost and Found > GTK style.
- GTK+ Change Theme — Little program that lets you change your GTK+ 2.0 theme (considered a better alternative to switch2).
- GTK+ Preference Tool — GTK+ theme selector and font switcher.
- GTK+ Theme Switch — Simple GTK+ theme switcher.
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
or~/.config/gtkrc-2.0
- GTK+ 2 system wide:
/etc/gtk-2.0/gtkrc
- GTK+ 3 user specific:
$XDG_CONFIG_HOME/gtk-3.0/settings.ini
- GTK+ 3 system wide:
/etc/gtk-3.0/settings.ini
Basic theme configuration
To manually change the GTK+ theme, icons, font and font size, add the following to the configuration files, for example:
GTK+ 2:
~/.gtkrc-2.0
gtk-icon-theme-name = "Adwaita" gtk-theme-name = "Adwaita" gtk-font-name = "DejaVu Sans 11"
GTK+ 3:
$XDG_CONFIG_HOME/gtk-3.0/settings.ini
[Settings] gtk-icon-theme-name = "Adwaita" gtk-theme-name = "Adwaita" gtk-font-name = "DejaVu Sans 11"
Dark theme variant
Some GTK+ 3 theme contain a dark theme variant, but it's only used by default, when the application request it explicitly. To use dark theme variant with all GTK+ 3 applications, set:
gtk-application-prefer-dark-theme = true
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:
gtk-can-change-accels = 1
This setting controls the delay between pointing the mouse at a menu and that menu opening. This delay is measured in milliseconds.
gtk-menu-popup-delay = 0
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
gtk-toolbar-style = GTK_TOOLBAR_ICONS
To use smaller icons, use a line like this:
gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-menu=16,16:gtk-large-toolbar=16,16\ :gtk-small-toolbar=16,16:gtk-button=16,16"
Or to remove icons from buttons completely:
gtk-button-images = 0
You can also remove icons from menus:
gtk-menu-images = 0
File-Chooser Startup-Location
Open the file-chooser within the current-working-directory and not with the artifical recent location. Normally the current-working-directory is home-directory.
GTK+ 3
Modify DConf with gsettings, there is no configuration file available:
$ gsettings set org.gtk.Settings.FileChooser startup-mode cwd
GTK+ 2
Modify ~/.config/gtk-2.0/gtkfilechooser.ini
configuration file:
~/.config/gtk-2.0/gtkfilechooser.ini
StartupMode=cwd
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:
~/.config/gtk-3.0/settings.ini
[Settings] gtk-primary-button-warps-slider = false
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 applications.
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:
~/.config/gtk-3.0/gtk.css
/* Remove dotted lines from GTK+ 3 applications */ .undershoot.top, .undershoot.right, .undershoot.bottom, .undershoot.left { background-image: none; }
GTK+ and HTML with Broadway
The GDK Broadway backend provides support for displaying GTK+ applications in a web browser, using HTML5 and web sockets. [3]
When using broadwayd, specify the display number to use, prefixed with a colon, similar to X. The default display number is 1.
$ display_number=:5
Start it.
$ broadwayd $display_number
Port Used on default
port = 8080 + ($display_number - 1)
Point your browser to http://localhost:port
To Start apps
$ GDK_BACKEND=broadway BROADWAY_DISPLAY=$display_number <<app>>
Alternatively can set address and port
$ broadwayd --port $port_number --address $address $display_number
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):
find $(find ~/.themes /usr/share/themes/ -wholename "*/gtk-3.0" | sed -e "s/^\(.*\)\/gtk-3.0$/\1/") -wholename "*/gtk-2.0" | sed -e "s/.*\/\(.*\)\/gtk-2.0/\1"/
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:
- Configure system-wide theme files:
/etc/gtk-3.0/settings.ini
(GTK+ 3) or/etc/gtk-2.0/gtkrc
(GTK+ 2) - Create symlinks, e.g
# ln -s /home/[username]/.gtkrc-2.0 /root/.gtkrc-2.0
- Adjust the theme as root
# gksu lxappearance
- 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 or double shadows with compositing enabled.
To remove the shadow and gap around windows (for example in combination with a tiling window manager), create the following file:
~/.config/gtk-3.0/gtk.css
.window-frame, .window-frame:backdrop { box-shadow: 0 0 0 black; border-style: none; margin: 0; border-radius: 0; } .titlebar { border-radius: 0; } .window-frame.csd.popup { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); } .header-bar { background-image: none; background-color: #ededed; box-shadow: none; } /* You may want to use this if you don't like the double title. GtkLabel.title { opacity: 0; }*/
To adjust the buttons in the header bar, use the gtk-decoration-layout
setting. [4] The below examples removes all buttons:
~/.config/gtk-3.0/settings.ini
gtk-decoration-layout=menu:
cedilla ç/Ç instead of ć/Ć
See [5], and [6] for a workaround using Xcompose (US international layout).
Suppress warning about accessibility bus
If your terminal shows a warning like:
WARNING **: Couldn't connect to accessibility bus:
when running GTK+ 3 programs, you can suppress the warning by executing it like:
NO_AT_BRIDGE=1 theprogram
or by adding NO_AT_BRIDGE=1
to your ~/.bashrc
or /etc/environment
.
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:
~/.config/gtk-3.0/gtk.css
/* Always use background color */ GtkWindow { background-color: @theme_bg_color; } /* Fix tooltip background override */ .tooltip { background-color: rgba(0, 0, 0, 0.8); } .tooltip * { background-color: transparent; } /* Fix Nautilus desktop window background override */ NautilusWindow { background-color: transparent; }
Examples
GTK+ 2 configuration example:
~/.gtkrc-2.0
# GTK theme include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc" # Font style "myfont" { font_name = "DejaVu Sans 8" } widget_class "*" style "myfont" gtk-font-name = "DejaVu Sans 8" # Icon theme gtk-icon-theme-name = "Tango" # Toolbar style gtk-toolbar-style = GTK_TOOLBAR_ICONS
GTK+ 3 example of a configuration as converted from GTK+ 2.x to GTK+ 3.x by lxappearance:
$XDG_CONFIG_HOME/gtk-3.0/settings.ini
[Settings] gtk-theme-name=TraditionalOk gtk-icon-theme-name=Fog gtk-font-name=Luxi Sans 12 gtk-cursor-theme-name=mate gtk-cursor-theme-size=24 gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR gtk-button-images=1 gtk-menu-images=1 gtk-enable-event-sounds=0 gtk-enable-input-feedback-sounds=0 gtk-xft-antialias=1 gtk-xft-hinting=1 gtk-xft-hintstyle=hintslight gtk-xft-rgba=rgb