暗黑模式切换
在明亮和暗黑模式/主题之间切换非常棒。它允许您在日落时切换到暗黑模式,或使用键盘快捷键切换模式。
主题之间的切换可以应用于当前正在运行的程序(可能需要守护进程),或者仅应用于新启动的程序。本文重点介绍在运行时切换,因此在使用期间切换会影响当前正在运行的程序。
在明亮和暗黑模式之间切换需要应用程序或应用程序工具包(如 GTK 和 Qt)的支持。
如果您不需要实时主题切换,要快速设置系统范围的暗黑主题,安装 gnome-themes-extra、adwaita-qt5-gitAUR 和 adwaita-qt6-gitAUR,并 导出 GTK_THEME=Adwaita:dark
、GTK2_RC_FILES=/usr/share/themes/Adwaita-dark/gtk-2.0/gtkrc
和 QT_STYLE_OVERRIDE=Adwaita-Dark
。
工具
- darkman — darkman 是一个工具,允许自动化在日落时过渡到暗黑模式,并在日出时返回到明亮模式。它允许放置在这些时间自动运行的 drop-in 脚本。它还公开了一个带有当前值的 XDG Desktop Portal 后端。
- Yin-Yang — Yin-Yang 是一个类似的工具,也可以手动运行(不仅在日落/日出时)。目前它支持 Plasma、GNOME 和 Budgie DE,以及一些最常用的杂项应用程序(Firefox、VSCode 等)。也支持运行自定义脚本。
- Blueblack — Blueblack 是 darkman 的替代品,不依赖 geoclue。提供您自己的位置,并在日出和日落时自动运行脚本。
工具包
GTK
要更改明亮/暗黑模式,您必须更改使用的主题。
大多数主题都有暗黑变体,并且按照惯例,这些变体都带有后缀 -dark
。例如,默认的 GTK 主题 Adwaita
有变体 Adwaita-dark
。
要永久更改为暗黑变体,请参阅 GTK#暗黑主题变体
要为正在运行的程序即时切换主题,需要提供 xsettings 规范 或 gsettings 的守护进程。对于使用 Xorg 运行的桌面,需要 xsettings 守护进程。对于使用 Wayland 运行的桌面,将查询 gsettings。要查询 gsettings 配置,GTK 需要 Settings
XDG Desktop Portal,由 xdg-desktop-portal-gtk 提供,以运行。
xsettings 守护进程
xsettings 会为 Xorg 会话查询。
来自 Xfce 的 xsettings 守护进程是 xfsettingsd,它由 xfce4-settings 软件包提供。
查询当前 GTK 主题
$ xfconf-query -c xsettings -p /Net/ThemeName
设置 GTK 主题
$ xfconf-query -c xsettings -p /Net/ThemeName -s "new-theme"
对此条目的更改是即时的,并影响所有 GTK 应用程序。
gsettings
gsettings 会为 Wayland 会话查询。为此工作,您需要运行 xdg-desktop-portal-gtk。
查询当前 GTK 主题
$ gsettings get org.gnome.desktop.interface gtk-theme
设置 GTK 主题
$ gsettings set org.gnome.desktop.interface gtk-theme "new-theme"
或者,如果您的主题未将暗黑方案应用于 Gtk4 应用程序,您可以请求默认主题的暗黑变体
$ gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
或明亮变体
$ gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'
对此条目的更改是即时的,并影响所有 GTK 应用程序。
请注意,并非所有 GTK 主题都支持明亮和暗黑变体。值得注意的是,如果您正在使用 KDE,Breeze GTK 主题不支持它。您可以通过运行以下命令切换到 Adwaita 主题。
KDE
如果您正在使用 KDE,并且想要动态切换明亮和暗黑模式(即使以 Qt 和 GTK 应用程序使用不同主题为代价),您可以将 GTK 主题切换为支持明亮和暗黑变体的主题 - 例如默认的 Adwaita 主题。您可以通过运行以下命令切换到 Adwaita 主题
$ gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita'
如果您想恢复到 KDE 默认主题,请运行
$ gsettings set org.gnome.desktop.interface gtk-theme 'Breeze'
这样做将允许您即使在已运行的应用程序上使用上面的 color-scheme 命令切换主题。它还将尊重 KDE 明亮/暗黑设置,该设置可以在 KDE 设置中切换。
Qt
Qt 具有类似于 GTK 的主题支持。
主题化 Qt 应用程序的一种方法是 使用 GTK 进行样式设置。然后,GTK 主题的更改也会影响 Qt 应用程序。
另一种方法是使用原生 Qt 主题,例如 adwaita-qt5-gitAUR。要切换主题,您可以按照 Qt#在 KDE Plasma 以外的环境下配置 Qt 5/6 应用程序 进行操作。
应用程序
Firefox
Firefox 会自动使用当前的 GTK 主题模式,并相应地调整浏览器的外观。有关更多设置和注意事项,请参阅 Firefox#暗黑主题。
要智能地更改 Web 内容,建议使用 Dark Reader 附加组件。
通过将 Automation
设置为 Use system color scheme
,Dark Reader 会在暗黑 GTK 主题下自动激活。
Libreoffice
Libreoffice 会自动使用当前的 GTK 主题模式。要手动设置它,请使用
Tools > Options > Preferences > View > Appearance > Mode: Dark.
Thunderbird
Thunderbird 符合当前的 GTK 主题,但建议进行一些更改。
请参阅 Thunderbird#主题调整。
Visual Studio Code
要在 Visual Studio Code 中更改主题,这个脚本 可能会有所帮助。
IntelliJ
Auto Dark Mode 插件将在安装后根据当前的 GTK 主题自动切换主题。
Alacritty
Alacritty 支持多种自定义配色方案。配置语法和发布的配色方案可以在 这里 找到。
要快速更改主题,您应该声明指向每个配色方案的指针,例如 &black
。然后,您可以通过简单地设置 colors: *black
来切换到配色方案。对此配置文件的更改是即时的,并影响所有当前正在运行的实例。如果不是,您可能需要设置 live_config_reload: true
。
边框和标题栏使用 GTK 主题进行主题化。要遵守 GTK 主题,您应该将设置 gtk_theme_variant
设置为默认值 None
。