跳转至内容

GTK

来自 ArchWiki

来自 GTK 网站

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

GTK 最初由 GNU 项目GIMP 开发,现已成为非常流行的工具包,拥有多种语言的绑定。本文将探讨用于配置 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 桌面门户,您可能需要设置环境变量 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。不过,这需要系统中安装 gnome-themes-extra-gtk2AUR 包才能正常工作,否则 GTK-2 应用程序将显示为 Raleigh 主题。

要更改 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 的蓝色桌面套件。
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 || greybird-gtk-themeAUR
  • Materia — 适用于 GTK3、GTK2 和 GNOME-Shell 的 Material Design 风格扁平化主题。
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 样式匹配,请参阅 Uniform look for Qt and GTK applications

配置工具

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

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

其他图形化工具通常会覆盖配置文件

同时支持 GTK 2 和 GTK 3

  • nwg-look — 适配于 wlroots 环境的 GTK3 设置编辑器。
https://github.com/nwg-piotr/nwg-look || nwg-look
安装后,可以在 首选项 > GTK 设置 中找到 nwg-look
  • 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/ (已停止维护) || 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 配置选项的完整列表,请查阅 GTK 编程参考手册中的 GTK4GTK3 GtkSettings 属性(以及 GTK 2 属性)。
  • 以下描述的一些设置(如 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 中称为加速键)可以通过将鼠标悬停在相应的菜单项上并按下所需的按键组合来更改。要启用此功能,请设置:

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(GTK 2)和 ~/.themes/your-new-key-theme/gtk-3.0/gtk-keys.css(GTK 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 文档

禁用鼠标粘贴

在单击鼠标中键时关闭从剪贴板(主选择区)粘贴的功能:

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。它已从主分支移除。在 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,需要通过 X11 后端使用 Xwayland 在 Wayland 会话上运行。

使用 Wayland 后端时,某些变量不会从 settings.ini 读取。GSettings 模式 org.gnome.desktop.interface 中存在的任何键值都会从 GSettings 读取,而不是 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 和 web socket 在 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 3 应用程序将使用默认 GTK 主题。反之亦然。因此,为了保持应用程序主题的一致性,最好使用同时支持 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 的桌面无关变体。

客户端装饰 (CSD)

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,它包含了一个默认禁用 CSD 的补丁。要启用客户端装饰,请设置 GTK_CSD 环境变量并赋予任何值。

或者,您可以使用 gtk-nocsd-gitAUR,参见其 README 了解 GTK3 和 GTK4 的配置。

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,这对于打印是必需的。然而,打印在没有安装 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)查找功能。这可能会令人感到不适,并且与其他桌面环境不太协调。

一些应用程序支持允许使用原生文件选择器的 XDG 桌面门户。如果那不起作用,您可以使用打过补丁的 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 以及可能存在的更多问题),GTK 4 应用程序可能会感到迟钝并消耗比以前更多的资源。

这可以通过设置以下环境变量来恢复:

GSK_RENDERER=gl

NVIDIA Optimus 设置下 GTK 4 应用程序使用 dGPU

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

或者,设置 GDK_VULKAN_DEVICE=device_index 环境变量;首先使用 GDK_VULKAN_DEVICE=list 运行 GTK 应用程序以找到正确的设备索引。这有一个缺点,即在应用程序启动/关闭时仍会唤醒 dGPU,并且如果使用 MUX 开关切换到仅 dGPU 模式,则更容易以某种方式崩溃。

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

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

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

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

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.