GTK

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.

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.

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 . For example to launch GNOME Calculator with the dark variant of Adwaita:
$ GTK_THEME=Adwaita:dark gnome-calculator
  • For GTK 2, use . For example to launch GIMP with the theme Raleigh:
$ GTK2_RC_FILES=/usr/share/themes/Raleigh/gtk-2.0/gtkrc gimp

More themes can be installed from the official repositories or the AUR. Manually extracted themes go in ~/.themes/ or ~/.local/share/themes/ directory.

Themes supporting GTK 2 and GTK 3:

  • 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

    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 .
    • 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:

      After installation, can be found in System Settings > Appearance > Application Style > Configure GNOME/GTK Application Style.

      Only GTK 2 is supported:

      • GTK Theme Switch Simple GTK theme switcher.
      http://muhri.net/nav.php3?node=gts || gtk-theme-switch2AUR

      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:
      • GTK 2 system wide:
      • GTK 3 user specific: , or if is not set
      • GTK 3 system wide:
      Note:
      • See the GTK4 and GTK3 GtkSettings properties (and GTK 2 properties) in the GTK programming reference manual for the full list of currently supported GTK configuration options.
      • Some of the settings described below (such as gtk-icon-sizes) are deprecated and ignored since GTK 3.10.
      • If you edit your GTK configuration files, only newly started applications will display the changes.

      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:
      • GTK 3:

      If the theme is not applied for GTK 3, use gsettings in addition:

      $ gsettings set org.gnome.desktop.interface gtk-theme Pop

      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:

      gtk-application-prefer-dark-theme = true

      For GTK 4, use:

      $ gsettings set org.gnome.desktop.interface color-scheme prefer-dark

      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

      Emacs key bindings

      To have Emacs-like key bindings in GTK applications add the following:

      ~/.gtkrc-2.0
      gtk-key-theme-name = "Emacs"

      For GTK3 also run:

      $ gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

      XFCE has a similar setting:

      $ xfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs

      The configuration files in determine what the Emacs bindings are, and can be changed. Copying sections to the users 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.

      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

      See also and .

      Hide CSD buttons

      To remove the client-side decorations (CSD) minimize and maximize buttons from gtk3 windows:

      gtk-decoration-layout=menu:close

      See GTK docs.

      Disable mouse paste

      To turn off pasting on middle mouse button click (aka PRIMARY):

      gtk-enable-primary-paste=false

      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.

      GTK 3

      Change setting with the following command:

      $ gsettings set org.gtk.Settings.FileChooser startup-mode cwd

      GTK 2

      Add the following to :

      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:

      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: . 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:

      ~/.config/gtk-3.0/settings.ini
      [Settings]
      gtk-overlay-scrolling = false

      GTK 4 will no longer support . 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:

      Note: May be ignored by some desktop environments (e.g. GNOME).

      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 . Any key that is present in the GSettings schema are read from there instead of .

      An example of such variables are and , 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 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.

      When using broadwayd, specify the display number to use, prefixed with a colon, similar to X. The default display number is 0 (zero).

      $ display_number=:5

      Start it.

      $ broadwayd $display_number 

      Port used by default

      port = 8080 + $display_number

      Point your browser to http://127.0.0.1:port

      To Start applications

      $ GDK_BACKEND=broadway BROADWAY_DISPLAY=$display_number <<application>>

      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 (, ) 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
      # ln -s /home/username/.gtkrc-2.0 /etc/gtk-2.0/gtkrc
      # ln -s /home/username/.config/gtk-3.0/settings.ini /etc/gtk-3.0/settings.ini
      • Configure system-wide theme files: (GTK 3) or (GTK 2)
      • Adjust the theme as root
      # lxappearance
      • Use a settings daemon (this is what most desktop environments do). A desktop-agnostic variant using XSettings is available in the AUR under .

      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 .

      To adjust the buttons in the header bar, use the setting. The below examples removes all buttons:

      To remove client-side decorations altogether, it is possible to use a patched library like or .

      cedilla ç/Ç instead of ć/Ć

      See , and 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:

      WARNING **: Couldn't connect to accessibility bus:

      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.

      Thumbnail support for GTK file dialog

      Install and to have the option to view files as thumbnails instead of list in the GTK file chooser.

      Button and menu icons

      For some applications in GNOME's Wayland session. Your 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 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 .

      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 . Subpixel antialiasing is not available.

      See also

      This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.