跳转至内容

GTK

来自 ArchWiki

来自 GTK 网站

GTK(或 GIMP Toolkit)是一个用于创建图形用户界面的多平台工具包。GTK 提供一套完整的控件,适用于从小型一次性工具到完整应用程序套件的各种项目。

GTK 最初由 GNU ProjectGIMP 开发,但现在它是一个非常流行的工具包,支持多种语言的绑定。本文将探讨用于配置 GTK 主题、样式、图标、字体和字体大小的工具,并详细介绍手动配置。

安装

注意 GTK 3 之前的版本已达到生命周期终点且不再维护。

目前提供多个 GTK 版本。它们可以使用以下软件包 安装

  • GTK 4.x 可通过 gtk4 软件包获得。
  • GTK 3.x 可通过 gtk3 软件包获得。
  • GTK 2.x 可通过 gtk2AUR 软件包获得。
  • GTK 1.x 可通过 gtkAUR 软件包获得。

Themes

GTK 3 和 GTK 4

在 GTK 3 和 GTK 4 中,默认主题是 Adwaita,但也包含 HighContrast 和 HighContrastInverse 主题。

要应用特定主题,请通过 dconf 编辑器设置 org.gnome.desktop.interface 命名空间下的 gtk-theme 属性。

$ gsettings set org.gnome.desktop.interface gtk-theme Adwaita
注意 对于基于 libadwaita 的 GTK 4 应用程序,所选的 GTK 主题需要 特殊支持,并且您需要使用 GTK_THEME 环境变量来强制设置 GTK 主题,或使用 libadwaita 的修补版本:libadwaita-without-adwaita-gitAUR

如果您不使用 dconf 属性,则可以使用 GTK_THEME 来应用 GTK 3 和 GTK 4 主题。例如,要以 Adwaita 的深色变体启动 GNOME 计算器:

$ GTK_THEME=Adwaita:dark gnome-calculator
提示 要通过桌面快捷方式(或启动器)将 GTK 主题应用于单个应用程序,请参阅 桌面条目#修改环境变量
注意 如果未使用相应的 XDG Desktop Portal,您可能需要设置 环境变量 ADW_DISABLE_PORTAL=1 才能使通过 GSettings 设置的主题生效。请参阅 https://gitlab.gnome.org/GNOME/libadwaita/-/commit/e715fae6a509db006a805af816f9d163f81011ef

GTK 2

在 GTK 2 中,默认主题是 Raleigh,但 Arch Linux 在 /usr/share/gtk-2.0/gtkrc 中有一个自定义配置文件,将默认主题设置为 Adwaita。

要更改 GTK 2 主题,请使用 GTK2_RC_FILES。例如,要以 Raleigh 主题启动 GIMP

$ GTK2_RC_FILES=/usr/share/themes/Raleigh/gtk-2.0/gtkrc gimp
提示 gtkrc 也可以是您家目录中由任何 #配置工具创建的自定义文件。请参阅 #示例

更多主题可以从官方仓库或 AUR 安装。手动提取的主题存放在 ~/.themes/~/.local/share/themes/ 目录中。

支持 GTK 2 和 GTK 3 的主题

  • Adapta — 基于 Material Design 指南的自适应 GTK 主题。包括:Adapta, Adapta-Eta, Adapta-Nokto, Adapta-Nokto-Eta
https://github.com/tista500/Adapta || adapta-gtk-theme
  • Arc — 一个具有现代外观和透明元素的扁平主题。包括:Arc, Arc-Dark, Arc-Darker
https://github.com/jnsh/arc-theme || 带透明度:arc-gtk-themeAUR,无透明度:arc-solid-gtk-themeAUR
  • Bluebird — Xfce 的 Blue Desktop 套件。
https://github.com/shimmerproject/Bluebird || xfce-theme-bluebirdAUR
  • Breeze — KDE 默认控件主题的 GTK 版本。包括:Breeze, Breeze-Dark
https://invent.kde.org/plasma/breeze-gtk || breeze-gtk
  • Deepin — Deepin 桌面的默认主题。包括:deepin, deepin-dark
https://github.com/linuxdeepin/deepin-gtk-theme || deepin-gtk-theme
  • GNOME Extra Themes — GNOME 桌面的额外主题。包括:Adwaita, Adwaita-dark, HighContrast
https://gitlab.gnome.org/GNOME/gnome-themes-extra || GTK3:gnome-themes-extra,GTK2:gnome-themes-extra-gtk2AUR
  • Greybird — 一个灰色和蓝色的 Xfce 主题,在 Xubuntu 12.04 中默认使用。
https://github.com/shimmerproject/Greybird || xfce-theme-greybirdAUR
  • Materia — 一个 Material Design 风格的扁平主题,支持 GTK3、GTK2 和 GNOME-Shell。
https://github.com/nana-4/materia-theme || materia-gtk-theme
  • MATE Themes — MATE 桌面的默认主题。包括:BlackMATE, Blue-Submarine, BlueMenta, ContrastHighInverse, Green-Submarine, GreenLaguna, Menta, TraditionalGreen, TraditionalOk
https://github.com/mate-desktop/mate-themes || mate-themes
  • Numix — 一个具有现代外观的扁平浅色主题(GNOME、Openbox、Unity、Xfce)。包括:Numix
https://github.com/numixproject/numix-gtk-theme || numix-gtk-theme-gitAUR
  • Vertex — GTK 3、GTK 2、Gnome-Shell 和 Cinnamon 的主题。
https://github.com/horst3180/vertex-theme || vertex-themesAUR
  • Zuki — GTK、gnome-shell 等的主题。
https://github.com/lassekongo83/zuki-themes || zuki-themesAUR

AUR 中还有许多其他 GTK 主题,例如:搜索 gtk-theme

GTK 和 Qt

如果您的桌面上同时有 GTK 和 Qt(KDE)应用程序,您会发现它们的界面风格不太协调。如果您希望您的 GTK 样式与 Qt 样式匹配,请阅读 Qt 和 GTK 应用程序的统一外观

配置工具

大多数主要的 桌面环境都提供用于配置 GTK 主题、图标、字体和字体大小的工具,并通过 XSettings 管理这些设置。

  • 如果您使用 Cinnamon,请使用“主题”工具(cinnamon-settings themes):前往 系统设置 > 主题
  • 如果您使用 Enlightenment:前往 设置 > 全部 > 外观 > 应用程序主题
  • 如果您使用 GNOME,请使用 GNOME Tweaks(gnome-tweaks):安装 gnome-tweaks
  • 如果您使用 KDE,请安装 kde-gtk-config。安装后,可以在 系统设置 > 颜色和主题 > 应用程序风格 > 配置 GNOME/GTK 应用程序风格 中选择 GTK 主题。
  • 如果您使用 LXQt,请使用“外观设置”工具(lxqt-config-appearance):前往 设置 > 外观 > GTK 风格
  • 如果您使用 MATE,请使用“外观首选项”工具(mate-appearance-properties):前往 系统 > 设置 > 外观
  • 如果您使用 Xfce,请使用“外观”工具:前往 设置 > 外观

其他 GUI 工具通常会覆盖 配置文件

支持 GTK 2 和 GTK 3

  • nwg-look — GTK3 设置编辑器,已适配在 wlroots 环境下工作。
https://github.com/nwg-piotr/nwg-look || nwg-look
安装后,nwg-look 可以在 首选项 > GTK 设置 中找到。
  • LXAppearance — LXDE 项目的独立于桌面的 GTK 3 样式配置工具(它不需要 LXDE 桌面的其他部分)。
https://github.com/lxde/lxappearance || lxappearance
  • Oo-mox — 用于生成 Numix 和 Flat-Plat 主题(GTK 2 和 3)、Archdroid 和 Gnome-Colors 图标主题的各种颜色变体的图形应用程序。它还允许为 HiDPI 显示器生成预缩放的 GTK 2 主题。
https://github.com/actionless/oomox || themix-full-gitAUR

仅支持 GTK 2

  • GTK Change Theme — 一个小程序,允许您更改 GTK 2.0 主题(被认为是 switch2 的更好替代品)。
http://plasmasturm.org/code/gtk-chtheme/ || gtk-chthemeAUR
  • GTK Preference Tool — GTK 主题选择器和字体切换器。
https://sourceforge.net/projects/gtk-win/ (unmaintained) || gtk2_prefsAUR
  • GTK Theme Switch — 简单的 GTK 主题切换器。
http://muhri.net/nav.php3?node=gts || gtk-theme-switch2AUR

配置

GTK 设置可以手动指定在配置文件中,但桌面环境和应用程序可能会覆盖这些设置。根据 GTK 版本,这些文件位于:

  • GTK 2 用户特定:$GTK2_RC_FILES~/.gtkrc-2.0
  • GTK 2 系统范围:/etc/gtk-2.0/gtkrc
  • GTK 3 用户特定:$XDG_CONFIG_HOME/gtk-3.0/settings.ini,或 $HOME/.config/gtk-3.0/settings.ini(如果 $XDG_CONFIG_HOME 未设置)
  • GTK 3 系统范围:/etc/gtk-3.0/settings.ini
  • 请参阅 GTK 编程参考手册中的 GTK4GTK3 GtkSettings 属性(以及 GTK 2 属性),以获取当前支持的 GTK 配置选项的完整列表。
  • 下面介绍的一些设置(例如 gtk-icon-sizes)已弃用,并且自 GTK 3.10 起被忽略。
  • 如果您编辑 GTK 配置文件,只有新启动的应用程序才会显示更改。

基本主题配置

要手动更改 GTK 主题、图标、字体和字体大小,请将以下内容添加到配置文件中,例如:

  • 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

如果主题未应用于 GTK 3,请另外使用 gsettings

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

同样,如果图标主题未应用于 GTK 3,请使用 gsettings

$ gsettings set org.gnome.desktop.interface icon-theme icon_theme_name

有关下载和手动安装图标,请参阅 图标

注意 gtk-icon-theme-namegtk-theme-name 是它们的目录名称,而不是index.theme 中的 name 属性。

深色主题变体

某些 GTK 3 主题包含深色主题变体,但这仅在应用程序明确请求时才默认使用。要将深色主题变体用于所有 GTK 3 应用程序,请设置:

gtk-application-prefer-dark-theme = true

对于 GTK 4,请使用:

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

键盘快捷键

键盘快捷键(在 GTK 中也称为 accelerators)可以通过将鼠标悬停在相应的菜单项上并按下所需的按键组合来更改。要启用此功能,请设置:

gtk-can-change-accels = 1

Emacs 键绑定

要在 GTK 应用程序中使用类似 Emacs 的键绑定,请添加以下内容:

~/.gtkrc-2.0
gtk-key-theme-name = "Emacs"
~/.config/gtk-3.0/settings.ini
[Settings]
gtk-key-theme-name = Emacs

对于 GTK3,还请运行:

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

XFCE 也有类似的设置:

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

声明键绑定

配置文件(例如 /usr/share/themes/Emacs/ 中的文件)决定了 Emacs 绑定的内容,并且可以更改。

/usr/share/themes/Emacs/gtk-2.0-key/gtkrc
binding "gtk-emacs-text-entry"
{
  bind "<ctrl>b" { "move-cursor" (logical-positions, -1, 0) }
  ...
}
/usr/share/themes/Emacs/gtk-3.0/gtk-keys.css
@binding-set gtk-emacs-text-entry
{
  bind "<ctrl>b" { "move-cursor" (logical-positions, -1, 0) };
  ...
}

将部分复制到用户的 ~/.gtkrc-2.0~/.themes/your-new-key-theme/gtk-3.0/gtk-keys.css(分别用于 GTK 2 和 3),允许按用户进行更改。

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

另请参阅 [1][2]

隐藏 CSD 按钮

要从 gtk3 窗口中移除客户端装饰(CSD)[3] 的最小化和最大化按钮:

gtk-decoration-layout=menu:close

请参阅 GTK 文档

禁用鼠标粘贴

要关闭单击鼠标中键时从剪贴板(PRIMARY selection)粘贴的功能:

gtk-enable-primary-paste=false

文件选择器启动位置

当前工作目录中打开文件选择器,而不是最近的位置。通常,当前工作目录主目录

GTK 3

使用以下命令更改 设置

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

GTK 2

将以下内容添加到 ~/.config/gtk-2.0/gtkfilechooser.ini

StartupMode=cwd

旧式滚动行为

注意 此设置并非所有 GTK 应用程序都遵守。
提示 通过使用右键单击而不是左键单击,可以可靠地实现旧式滚动行为。

在 GTK 3.6 之前,单击滚动条滑块的任一侧都会将滚动条向点击方向移动约一页。自 GTK 3.6 起,滑块将直接移动到点击位置。通过创建以下内容的文件,可以在某些应用程序中恢复此行为:

~/.config/gtk-3.0/settings.ini
[Settings]
gtk-primary-button-warps-slider = false

禁用覆盖滚动条

自 GTK 3.15 起,默认启用覆盖滚动条,这意味着滚动条仅在 GTK 3 应用程序中鼠标悬停时显示。可以通过设置以下环境变量来恢复此行为:GTK_OVERLAY_SCROLLING=0。请参阅 环境变量#图形环境

或者,自 GTK 3.24.9 起,可以在 GTK 3 设置中禁用覆盖滚动条。为此,必须在设置文件的 [Settings] 部分将 gtk-overlay-scrolling 的值设置为 false:

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

GTK 4 不再支持 GTK_OVERLAY_SCROLLING。它已从 master 分支 移除。在 GTK 4 中,滚动条的覆盖性质是工具包的一部分。为了防止开发者破坏未经过两种组合测试的应用程序,已删除了全局切换。为了让应用程序开发者决定其应用程序的外观,工具包提供了选择退出或为用户添加设置的机制。函数 gtk_scrolled_window_set_overlay_scrolling() 可用于在应用程序级别启用/禁用覆盖滚动。应用程序开发者可以选择使用 GSettings 将用户设置绑定到该属性。

移除覆盖滚动指示器

覆盖滚动条的位置由应用程序窗口中的细虚线指示。即使使用上述部分中讨论的环境变量禁用了覆盖滚动,这些虚线仍然会存在。要移除指示线,请创建以下文件:

~/.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-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0

示例

GTK 示例配置

注意 可能会被某些 桌面环境(例如 GNOME)忽略。
~/.gtkrc-2.0
gtk-theme-name="Arc-Dark"
gtk-icon-theme-name="breeze-dark"
gtk-font-name="Sans 11"
gtk-cursor-theme-name="Breeze_Amber"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
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"
~/.config/gtk-3.0/settings.ini
[Settings]
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=breeze-dark
gtk-font-name=Sans 11
gtk-cursor-theme-name=Breeze_Amber
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
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
# gtk-decoration-layout=menu:close
# gtk-application-prefer-dark-theme=1

GDK 后端

GDK(GTK 的底层抽象层)支持多种后端来显示 GTK 应用程序。

Wayland 后端

GDK Wayland 后端仅由 gtk3 或更新版本支持,并且在使用 Wayland 显示服务器时是默认后端。

使用早于 gtk3 的 GTK 版本的应用程序没有 Wayland 支持,需要使用 Xwayland 才能在 Wayland 会话中使用 X11 后端运行。

在使用 Wayland 后端时,某些变量不会从 settings.ini 中加载。GSettings schema org.gnome.desktop.interface 中存在的任何键都会从那里读取,而不是从 settings.ini 读取。

这类变量的示例是 gtk-color-schemeicon-theme,它们必须使用 GSettings 设置键才能对 Wayland 下的 GTK 应用程序进行主题化。或者,如果只需要自定义主题,可以设置环境变量 GTK_THEME

有关此内容的更多详细信息,请参阅 sway wiki 上的相关文章

Xorg 后端

如果使用 Xorg 显示服务器,后端会自动默认为 x11

可以通过设置环境变量 GDK_BACKEND=x11 来强制在 Wayland 会话中运行的 GTK3 应用程序使用 Xwayland 上的 X11 后端。

Broadway 后端

GDK Broadway 后端支持使用 HTML5 和 WebSockets 在 Web 浏览器中显示 GTK 应用程序。[4]

使用 broadwayd 时,请指定要使用的显示编号,前面带有冒号,类似于 X。默认显示编号是 0(零)。

$ display_number=:5

启动它。

$ broadwayd $display_number 

默认使用的端口

port = 8080 + $display_number

将您的浏览器指向 http://127.0.0.1:port

启动应用程序

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

或者,可以设置地址和端口:

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

故障排除

GTK 2 和 GTK 3 应用程序之间的不同主题

通常情况下,如果所选主题同时支持 GTK 2 和 GTK 3,则该主题将应用于所有 GTK 2 和 GTK 3 应用程序。如果所选主题仅支持 GTK 2,则它将用于 GTK 2 应用程序,而默认 GTK 主题将用于 GTK 3 应用程序。如果所选主题仅支持 GTK 3,则它将用于 GTK 3 应用程序,而默认 GTK 主题将用于 GTK 2 应用程序。因此,为了应用程序主题的一致性,最好使用同时支持 GTK 2 和 GTK 3 的主题。

您可以使用此命令查找系统上安装了同时具有 GTK 2 和 GTK 3 版本的哪些主题(不适用于包含空格的名称):

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"/

主题未应用于 root 应用程序

由于用户主题文件($XDG_CONFIG_HOME/gtk-3.0/settings.ini~/.gtkrc-2.0)不被其他账户读取,因此所选主题将不适用于以 root 身份运行的 X 应用程序。可能的解决方案包括:

  • 创建符号链接,例如:
# ln -s $HOME/.gtkrc-2.0 /etc/gtk-2.0/gtkrc
# ln -s $HOME/.config/gtk-3.0/settings.ini /etc/gtk-3.0/settings.ini
  • 配置系统范围的主题文件:/etc/gtk-3.0/settings.ini(GTK 3)或 /etc/gtk-2.0/gtkrc(GTK 2)
  • 以 root 身份调整主题
# lxappearance
  • 使用设置守护程序(这是大多数桌面环境的做法)。可使用 xsettingsd-gitAUR 获得独立于桌面的变体,该变体使用 XSettings

客户端装饰

GTK 3.12 引入了 客户端装饰,将标题栏从窗口管理器移开。这可能导致出现诸如双重标题栏、根本没有标题栏、启用合成时双重阴影,或无法移动冻结的应用程序等问题。

要移除窗口周围的阴影和间隙(例如与平铺窗口管理器结合使用时),请创建以下文件:

~/.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 do not like the double title.
GtkLabel.title {
    opacity: 0;
}*/

请注意,如果视觉问题仍然存在,您可能需要使用 GTK Inspector 来查找引起问题的元素,如在此处所述 [5]

要调整标题栏中的按钮,请使用 gtk-decoration-layout 设置。[6] 以下示例移除了所有按钮:

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

要完全移除客户端装饰,可以使用 gtk3-classicAUR,它包含一个默认禁用它们的补丁。要启用客户端装饰,请将 GTK_CSD 环境变量设置为任何值。

或者,您可以使用 gtk-nocsd-gitAUR,有关 GTK3 和 GTK4 的信息请参阅 README

cedilla ç/Ç 而不是 ć/Ć

请参阅 [7][8],了解使用 Xcompose(美国国际布局)的变通方法。

抑制关于辅助功能总线的警告

如果您不使用任何 GNOME 辅助功能功能,您可能会收到类似以下的警告:

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

要抑制这些警告,请使用 NO_AT_BRIDGE=1 执行程序,或将其设置为全局 环境变量

标题栏背景颜色不匹配

如果您使用的 窗口管理器使用模拟 GTK 主题背景颜色的窗口装饰主题,您可能会发现在某些 GTK 3 应用程序中,标题栏颜色与应用程序颜色不再完全匹配。作为一种变通方法,请创建以下文件:

~/.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; 
}

与平铺窗口管理器错误的焦点事件

注意 这将禁用 GTK3 应用程序的平滑滚动和触摸屏支持。[9]

定义 GDK_CORE_DEVICE_EVENTS=1 以使用 GTK2 风格的输入,而不是 xinput2。[10]

GTK 文件对话框的缩略图支持

安装 gtk2-patched-filechooser-icon-viewAURgtk3-patched-filechooser-icon-viewAUR 以获得在GTK文件选择器中将文件显示为缩略图而不是列表的选项。

按钮和菜单图标

本文或本章节的准确性存在争议。

原因:解释问题所在。如果使用GDM,GNOME会忽略settings.ini。(讨论请参见 Talk:GTK

对于GNOME Wayland会话中的某些应用程序,您的~/.config/gtk-3.0/settings.ini文件配置不正确。如果您尝试过其他基于GTK的桌面环境,可能会出现这种情况。以下是导致问题的设置值:

~/.config/gtk-3.0/settings.ini
[Settings]
gtk-button-images=1
gtk-menu-images=1

只需将它们设置为0或删除整个文件即可使用GNOME的默认设置。

不带polkit的GTK 3

GTK3通过colord依赖于polkit,colord是打印所必需的。然而,即使没有安装polkit,打印功能也能正常工作;至少对于单色打印机和软件包版本gtk3-print-backends=3.22.19-2和colord=1.4.1-1是如此。

一些GTK 2主题只改变UI颜色调色板

根据所选主题对GTK 2的支持程度,UI控件可能仍然具有默认的Raleigh外观,可能带有不同的颜色调色板。这是因为这些主题需要GTK 2 Murrine引擎,而该引擎缺失(GTK 2程序应该会在其标准错误输出中抱怨)。安装 gtk-engine-murrineAUR 软件包。

修补GTK文件选择器以使用常规的类型超前查找

GTK文件选择器使用与 GNOME/Files 相同的类型超前查找(type-ahead-find)功能。这可能非常刺眼,并且与其他桌面环境不太兼容。

一些应用程序支持 XDG Desktop Portal,它允许应用程序使用原生文件选择器。如果这不起作用,您可以通过使用已修补的GTK来恢复类型超前查找功能,例如 gtk3-classicAUR

GTK 4应用程序中的文本模糊或渲染不正确

GTK 4在渲染字体时切换到无hint的灰度抗锯齿。有一个设置可以恢复GTK 3的一些行为 [11]。对于非HiDPI屏幕,它默认开启(截至2023年8月 ),这对大多数用户来说应该能产生不错的效果。不支持子像素抗锯齿。

~/.config/gtk-4.0/settings.ini
[Settings]
gtk-hint-font-metrics=1

GTK 4应用程序运行缓慢

由于GTK切换到了新的GPU渲染器ngl(后期版本使用vulkan),其性能比旧的gl渲染器差(#6438 以及可能更多的问题),GTK 4应用程序可能感觉迟钝,并且比以前消耗更多的资源。

可以通过设置下面的 环境变量 来恢复此状态

GSK_RENDERER=gl

在NVIDIA Optimus设置中使用dGPU的GTK4应用程序

最近的GTK4版本已切换到vulkan渲染器;这对拥有NVIDIA dGPU的用户来说是个问题,因为 现在将默认使用它们,这是因为GTK在枚举设备时会选择第一个可用的GPU,而NVIDIA通常将dGPU作为第一个呈现。目前最可靠的解决方案是回退到基于OpenGL的渲染器之一;这可以通过设置GSK_RENDERER=ngl 环境变量(或者GSK_RENDERER=gl使用旧的GL后端,它 可能性能更好)来实现。

或者,设置GDK_VULKAN_DEVICE=device_index 环境变量;首先使用GDK_VULKAN_DEVICE=list运行GTK应用程序来查找正确的设备索引。缺点是它仍然会在应用程序启动/关闭时唤醒dGPU,并且如果使用MUX切换到dGPU-only模式,则更有可能以某种方式中断。

最后,可以通过__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=non_NVIDIA_only 环境变量让NVIDIA驱动程序将dGPU放在Vulkan设备枚举的最后。虽然它有效,但全局设置它是一个非常糟糕的主意,因为它将导致所有OpenGL应用程序使用dGPU(__VK_LAYER_NV_optimus=non_NVIDIA_only仅在设置了__NV_PRIME_RENDER_OFFLOAD=1时才有效,而后者会导致OpenGL应用程序使用dGPU)。

较旧AMD显卡上的预览和图像损坏问题

使用RDNA之前的AMD显卡的用户可能会遇到一些图像和预览生成时出现故障的情况(#7559)。

作为一种变通方法,请设置 GDK_DISABLE=dmabuf 环境变量 [12]

参见