GTK

来自 ArchWiki

来自 GTK 网站

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

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

安装

目前有多个版本的 GTK 可用。可以使用以下软件包安装

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

主题

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 桌面门户,您可能需要设置 环境变量 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 Guidelines 的自适应 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-theme,不带透明度:arc-solid-gtk-theme
  • Bluebird — Xfce 的蓝色桌面套件。
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 || gnome-themes-extra
  • 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
  • 如果您使用 MATE,请使用外观首选项工具 (mate-appearance-properties):转到系统 > 设置 > 外观
  • 如果您使用 Xfce,请使用外观工具:转到设置 > 外观

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

同时支持 GTK 2 和 GTK 3

  • nwg-look — 适用于 wlroots 环境的 GTK3 设置编辑器。
https://github.com/nwg-piotr/nwg-look || nwg-look
安装后,可以在首选项 > GTK 设置中找到 nwg-look
  • KDE GTK Configurator — 允许您更改 GTK 2 和 GTK 3 应用程序的样式和字体的应用程序。
https://invent.kde.org/plasma/kde-gtk-config || kde-gtk-config
安装后,可以在系统设置 > 外观 > 应用程序样式 > 配置 GNOME/GTK 应用程序样式中找到 kde-gtk-config
  • LXAppearance — 来自 LXDE 项目的独立于桌面的 GTK 2 和 GTK 3 样式配置工具(它不需要 LXDE 桌面的其他部分)。
https://github.com/lxde/lxappearance || lxappearance-gtk3
  • 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-chtheme
  • GTK Preference Tool — GTK 主题选择器和字体切换器。
https://gtk-win.sourceforge.io/home/index.php/Main/GTKPreferenceTool[死链 2024-07-30 ⓘ] || 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,或者如果未设置 $XDG_CONFIG_HOME,则为 $HOME/.config/gtk-3.0/settings.ini
  • GTK 3 系统范围:/etc/gtk-3.0/settings.ini
注意
  • 请参阅 GTK 编程参考手册中的 GTK4GTK3 GtkSettings 属性(以及 GTK 2 属性),以获取当前支持的 GTK 配置选项的完整列表。
  • 自 GTK 3.10 起,下面描述的某些设置(例如 gtk-icon-sizes)已被弃用并被忽略。
  • 如果您编辑了 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 中也称为加速器)。要启用此功能,请设置

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 选择)粘贴,请设置

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 开始,滚动条的覆盖性质是工具包的一部分。已删除 blanket 开关,以防止开发人员破坏尚未针对两种组合进行测试的应用程序。为了让应用程序开发人员决定其应用程序的外观,工具包反而提供了一种机制,允许选择退出或为用户添加设置。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 示例配置

注意: 可能会被某些桌面环境(例如 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 才能在使用 X11 后端的 Wayland 会话上运行。

使用 Wayland 后端时,某些变量不是从 settings.ini 获取的。GSettings 架构 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 应用程序使用 X11 后端(通过 Xwayland)。

Broadway 后端

GDK Broadway 后端提供对使用 HTML5 和 Web 套接字在 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
  • 使用设置守护程序(这是大多数桌面环境的做法)。使用 XSettings 的桌面无关变体可通过 xsettingsd-gitAUR 获得。

客户端装饰

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 环境变量

或者,您可以使用 gtk3-nocsd-gitAUR,有关详细信息,请参阅 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-murrine 软件包。

补丁 GTK 文件选择器以使用常规的提前输入

GTK 文件选择器使用与 GNOME/Files 相同的提前查找功能。这可能会非常不协调,并且与其他桌面环境不太协调。

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

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

GTK 4 在渲染字体时切换到无 hinting 的灰度抗锯齿。有一个设置可以恢复 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, #6682, #6644, #6324 以及可能更多的问题),GTK 4 应用程序可能会感觉迟缓并且比以前消耗更多资源。

这可以通过设置下面的环境变量来恢复。

GSK_RENDERER=gl
GDK_DEBUG=gl-no-fractional

GTK4 的渲染和缩放问题

amdvlk 的用户报告说,自 gtk4 版本 4.15.3 以来,他们看到了 黑边框和异常大的光标

这可以通过将 amdvlk 替换为 vulkan-radeon 来解决,尽管也有人报告说使用 GSK_RENDERER=ngl 在 NVIDIA Optimus 设置上使用 dGPU 的 GTK4 应用程序

最新的 GTK4 版本已切换到 vulkan 渲染器;这对于使用 NVIDIA dGPU 的用户来说是有问题的,因为 默认情况下会使用这些渲染器,原因是 GTK 在枚举设备时选择第一个可用的 GPU,而 NVIDIA 通常将 dGPU 作为第一个呈现。目前最可靠的解决方案是恢复到基于 OpenGL 的渲染器之一;这可以通过设置 GSK_RENDERER=ngl 可能性能更好)。

或者,设置 GDK_VULKAN_DEVICE=device_index 参见