GTK
来自 GTK 网站
- GTK(或 GIMP Toolkit)是一个用于创建图形用户界面的多平台工具包。GTK 提供一套完整的控件,适用于从小型一次性工具到完整应用程序套件的各种项目。
GTK 最初由 GNU Project 为 GIMP 开发,但现在它是一个非常流行的工具包,支持多种语言的绑定。本文将探讨用于配置 GTK 主题、样式、图标、字体和字体大小的工具,并详细介绍手动配置。
安装
目前提供多个 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
GTK_THEME 环境变量来强制设置 GTK 主题,或使用 libadwaita 的修补版本:libadwaita-without-adwaita-gitAUR。如果您不使用 dconf 属性,则可以使用 GTK_THEME 来应用 GTK 3 和 GTK 4 主题。例如,要以 Adwaita 的深色变体启动 GNOME 计算器:
$ GTK_THEME=Adwaita:dark gnome-calculator
ADW_DISABLE_PORTAL=1 才能使通过 GSettings 设置的主题生效。请参阅 https://gitlab.gnome.org/GNOME/libadwaita/-/commit/e715fae6a509db006a805af816f9d163f81011efGTK 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
更多主题可以从官方仓库或 AUR 安装。手动提取的主题存放在 ~/.themes/ 或 ~/.local/share/themes/ 目录中。
支持 GTK 2 和 GTK 3 的主题
- Adapta — 基于 Material Design 指南的自适应 GTK 主题。包括:Adapta, Adapta-Eta, Adapta-Nokto, Adapta-Nokto-Eta
- Arc — 一个具有现代外观和透明元素的扁平主题。包括:Arc, Arc-Dark, Arc-Darker
- https://github.com/jnsh/arc-theme || 带透明度:arc-gtk-themeAUR,无透明度:arc-solid-gtk-themeAUR
- Bluebird — Xfce 的 Blue Desktop 套件。
- Breeze — KDE 默认控件主题的 GTK 版本。包括:Breeze, Breeze-Dark
- Deepin — Deepin 桌面的默认主题。包括:deepin, deepin-dark
- 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 中默认使用。
- Materia — 一个 Material Design 风格的扁平主题,支持 GTK3、GTK2 和 GNOME-Shell。
- MATE Themes — MATE 桌面的默认主题。包括:BlackMATE, Blue-Submarine, BlueMenta, ContrastHighInverse, Green-Submarine, GreenLaguna, Menta, TraditionalGreen, TraditionalOk
- Numix — 一个具有现代外观的扁平浅色主题(GNOME、Openbox、Unity、Xfce)。包括:Numix
- Vertex — GTK 3、GTK 2、Gnome-Shell 和 Cinnamon 的主题。
- Zuki — GTK、gnome-shell 等的主题。
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 桌面的其他部分)。
- Oo-mox — 用于生成 Numix 和 Flat-Plat 主题(GTK 2 和 3)、Archdroid 和 Gnome-Colors 图标主题的各种颜色变体的图形应用程序。它还允许为 HiDPI 显示器生成预缩放的 GTK 2 主题。
仅支持 GTK 2
- GTK Change Theme — 一个小程序,允许您更改 GTK 2.0 主题(被认为是 switch2 的更好替代品)。
- GTK Preference Tool — GTK 主题选择器和字体切换器。
- https://sourceforge.net/projects/gtk-win/ (unmaintained) || gtk2_prefsAUR
- GTK Theme Switch — 简单的 GTK 主题切换器。
配置
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 主题、图标、字体和字体大小,请将以下内容添加到配置文件中,例如:
- 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-name 和 gtk-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
隐藏 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 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 示例配置
~/.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-scheme 和 icon-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;
}
与平铺窗口管理器错误的焦点事件
定义 GDK_CORE_DEVICE_EVENTS=1 以使用 GTK2 风格的输入,而不是 xinput2。[10]
GTK 文件对话框的缩略图支持
安装 gtk2-patched-filechooser-icon-viewAUR 和 gtk3-patched-filechooser-icon-viewAUR 以获得在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]。