跳转至内容

切换暗黑模式

来自 ArchWiki


在浅色和暗黑模式/主题之间切换是一个很方便的功能。它允许您在日落时切换到暗黑模式,或通过键盘快捷键切换模式。

模式的切换可以应用于当前正在运行的程序(可能需要一个守护进程),或者仅应用于新启动的程序。本文侧重于运行时切换,因此在使用过程中切换会影响当前正在运行的程序。

在浅色和暗黑模式之间切换需要应用程序或应用程序工具包(如 GTKQt)的支持。

如果您不需要实时主题切换,并且想快速在整个系统上设置暗黑主题,请 安装 gnome-themes-extragnome-themes-extra-gtk2AURadwaita-qt5-gitAURadwaita-qt6-gitAUR,然后 导出 环境变量 GTK_THEME=Adwaita:darkGTK2_RC_FILES=/usr/share/themes/Adwaita-dark/gtk-2.0/gtkrcQT_STYLE_OVERRIDE=Adwaita-Dark

工具

  • darkman — darkman 是一款能够实现日落时自动过渡到暗黑模式,日出时切换回浅色模式的工具。它允许在这些时间自动运行插入式脚本。它还提供一个具有当前值的 XDG Desktop Portal 后端。
https://gitlab.com/WhyNotHugo/darkman/ || darkman
  • Yin-Yang — Yin-Yang 是一款类似的工具,也可以手动运行(不只是在日出/日落时)。目前它支持 Plasma、GNOME & Budgie 桌面环境,以及一些最常用的杂项应用程序(Firefox、VSCode 等)。也支持运行自定义脚本。
https://github.com/oskarsh/Yin-Yang || yin-yangAUR
  • Blueblack — Blueblack 是 darkman 的替代方案,无需 geoclue 依赖。您只需提供自己的位置,即可在日出和日落时自动运行脚本。
https://github.com/smitropoulos/blueblack || blueblackAUR

工具包

GTK

要更改浅色/暗黑模式,您必须更改所使用的 the me。

大多数主题都有一个暗黑变体,并且这些主题通常带有 -dark 后缀。例如,默认的 GTK 主题 Adwaita 有一个变体 Adwaita-dark

要永久更改为暗黑变体,请参阅 GTK#Dark theme variant

要即时切换正在运行程序的 theme,需要一个提供 xsettings spec 的守护进程或 gsettings。对于运行 Xorg 的桌面,需要一个 xsettings 守护进程。对于运行 Wayland 的桌面,会查询 gsettings。要查询 gsettings 配置,GTK 需要运行 Settings XDG Desktop Portal,由 xdg-desktop-portal-gtk 提供。

xsettings daemon

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#Configuration of Qt 5/6 applications under environments other than KDE Plasma 进行操作。

应用程序

Firefox

Firefox 会自动使用当前 GTK 主题模式并相应地调整浏览器的外观。有关更多设置和注意事项,请参阅 Firefox#Dark themes

为了智能地改变网页内容,推荐使用 Dark Reader 插件。

通过将 Automation 设置为 Use system color scheme,Dark Reader 可以在使用暗黑 GTK 主题时自动激活。

Libreoffice

LibreOffice 会自动使用当前 GTK 主题模式。要手动设置,请使用:

Tools > Options > Preferences > View > Appearance > Mode: Dark.

Thunderbird

Thunderbird 符合当前 GTK 主题,但建议进行一些更改。

请参阅 Thunderbird#Theming tweaks

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


Ghostty

Ghostty 支持浅色和暗黑主题。

要使用它,请在 配置文件中添加一行,指定暗黑和浅色模式的主题。

theme = dark:catppuccin-frappe,light:catppuccin-latte

文档链接