GTK (简体中文)

GTK,即 GIMP Toolkit,最初由 GNU项目GIMP 开发,但现在它已经是一个非常流行的工具包,绑定了很多语言。本文将探讨 GTK 主题、风格、图标、字体和字号的配置工具,也会详细介绍手动配置。

翻译状态:本文是 GTK翻译。上次翻译日期:2013-02-18。如果英文版本有所更改,则您可以帮助同步翻译。

摘自 GTK 官方网站

GTK,或称 GIMP Toolkit,是一个跨平台的图形界面开发库。该库提供各式各样的窗口部件,小到一次性使用的程序、大到大型应用,GTK 都能满足你的需求。

安装

目前在官方仓库中有三个版本的 GTK。它们可以通过以下软件包来安装

  • GTK 4.x 可以通过 gtk4 包获得。
  • GTK 3.x 可以通过 gtk3 包获得。
  • GTK 2.x 可以通过 gtk2 包获得。

此外:

  • GTK 1.x 可以通过 包获得。

主题

In GTK 3, 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 , which sets the default theme to Adwaita.

To force a specific theme, set the following environment variables:

  • For GTK 3, use . For example to launch GNOME Calculator with the dark variant of Adwaita:
$ GTK_THEME=Adwaita:dark gnome-calculator
  • For GTK 2, use GTK2_RC_FILES. 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 or directory.

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
  • 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
  • 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 与 QT

    同时在系统上安装GTK和QT(通常是KDE组件)程序的人都知道,两者的外观并不怎么协调。关于两者外观统一的问题,参见:协调QT和GTK程序的外观

    配置工具

    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 also be found in System Settings > Application Style > GNOME/GTK Application Style.

      Only GTK 2 is supported:

      • GTK Preference Tool GTK theme selector and font switcher.
      http://gtk-win.sourceforge.net/home/index.php/Main/GTKPreferenceTool || gtk2_prefsAUR

        配置

        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 $XDG_CONFIG_HOME is not set
        • GTK 3 system wide:

        基本主题配置

        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 in addition:

        $ gsettings set org.gnome.desktop.interface gtk-theme Pop
        注意: The icon theme name is the name of its directory, not the name property in its index.theme.

        深色版主题

        有些 GTK 3 的主题包含深色版本, 但只有应用程序明确要求时才会使用. 要在所有 GTK 3 程序中应用深色模式, 请使用以下配置:

        gtk-application-prefer-dark-theme = true

        键盘快捷键

        把鼠标放在某个菜单项,然后按下某个按键组合,即可修改该项目的快捷键。不过,该功能默认是关闭的。启用方法是使用以下配置:

        gtk-can-change-accels = 1

        Emacs 按键绑定

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

        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 config 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 菜单延迟

        鼠标指向菜单与菜单显示之间有一个延迟,以下设置就是该延迟时间(应该是以毫秒为单位):

        gtk-menu-popup-delay = 0

        缩小窗口部件

        如果屏幕很小,不喜欢过大的图标和窗口部件,可以调整其尺寸。

        工具栏仅显示图标:

        gtk-toolbar-style = GTK_TOOLBAR_ICONS

        显示小图标:

        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" 按钮上不显示图标:

        gtk-button-images = 0

        菜单不显示图标:

        gtk-menu-images = 0

        更多gtkrc优化配置参见此文。此外,使用该主题即可搞定上面所有配置。

        Hide CSD buttons

        To remove the minimize and maximize buttons from gtk3 windows:

        gtk-decoration-layout=menu:close

        See .

        禁用鼠标中键粘贴

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

        gtk-enable-primary-paste=false

        文件选择器启动时的初始位置

        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:

        ~/.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: . See Environment variables#Graphical environment.

        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:

        ~/.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 example configurations:

        GDK 后端

        GDK(GTK 的底层抽象层)支持多个后端显示 GTK 应用。

        Wayland 后端

        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.

        Xorg 后端

        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 .

        Broadway 后端

        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 apps

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

        Alternatively can set address and port

        $ broadwayd --port $port_number --address $address $display_number

        问题解决

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

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

        ~/.config/gtk-3.0/settings.ini
        gtk-decoration-layout=menu:

        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 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 to use GTK2 style input, instead of xinput2.

        Thumbnail support for GTK file dialog

        Install and gtk3-patched-filechooser-icon-viewAUR 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 gtk3-mushroomsAUR.

        参见

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