Kali Linux Xfce 切换浅色模式

一开始,我以为这应该是一件很简单的事情。Kali Linux 用的是 Xfce,我想把整个桌面从深色切换成浅色。按照正常理解,无非就是打开 Settings → Appearance → Style,选一个 Kali-Light,事情应该到此结束。

结果现实告诉我:没那么简单。Xfce 是浅色的,QTerminal 还是黑的;Firefox 的 Automatic 还是黑的;后来装了 Chrome,发现 Chrome 默认也是深色。

深色模式的QTerminal

这时候问题就变得有意思了:到底是我哪里没设置好,还是 Linux 的“浅色模式”根本就不是一个统一的东西?最后一路排查下来,答案是后者。

折腾过程

第一关:Kali-Light 明明已经选上了

首先检查 Xfce:

1
xfconf-query -c xsettings -p /Net/ThemeName

返回:

1
Kali-Light

这说明 Xfce 自己认为当前主题就是浅色。于是我最开始的判断是:

那应该只是某些软件没有跟随 Xfce。

这个判断其实没错,但还不完整。因为接下来发现,问题并不只是 Qt。

第二关:QTerminal 为什么还在黑着?

QTerminal 是 Qt 应用,而 Xfce 的 Appearance 主要解决的是 GTK/Xfconf 这一套。

检查环境变量:

1
echo $QT_QPA_PLATFORMTHEME

结果是:

1
qt5ct

这就解释了 QTerminal 为什么不听 Xfce 的话——Qt 被 qt5ct 接管了。

所以我打开:

1
2
qt5ct
qt6ct

再到里面选择浅色配色。QTerminal是 Qt6 编写的,所以调整 qt6ct 才生效。

设置可以启动qt5ct、qt6ct

到这里其实已经能看出 Linux 桌面主题系统的一个特点:

GTK 是一套,Qt 又是一套。

Xfce 选了 Light,不代表 Qt 就必须 Light。事情开始变复杂了。

第三关:Firefox 也不对劲

然后我发现 Firefox 的 Website appearance → Automatic 还是深色。这时候很自然会怀疑 Firefox。于是去 about:config 搜索:

1
ui.systemUsesDarkTheme

结果发现这个设置根本不存在。于是又检查:

1
layout.css.prefers-color-scheme.content-override

结果是:2,也就是跟随系统。

看起来 Firefox 的配置并没有明显问题。这时候我开始怀疑:

会不会根本不是 Firefox 的问题?

第四关:Chrome 出现以后,事情突然变简单了

后来安装了 Chrome。结果发现:Chrome 默认也是 Dark。这一刻反而是个好消息。因为如果只有 Firefox 出问题,还可以继续怀疑 Firefox。

但现在:

  • Xfce:Light
  • QTerminal:Dark
  • Firefox:Dark
  • Chrome:Dark

多个完全不同的软件都出现类似现象。这已经不像某一个应用的 Bug 了。于是开始往“系统到底告诉应用自己是什么颜色”这个方向查。

第五关:检查 GTK

先看看有没有 GTK 自己的配置:

1
cat ~/.config/gtk-3.0/settings.ini

结果:

1
没有那个文件或目录

GTK 4 也是一样。

然后检查有没有强制 Dark:

1
2
3
4
grep -Rni "prefer-dark\|dark-theme\|color-scheme" \
~/.config/gtk-3.0 \
~/.config/gtk-4.0 \
2>/dev/null

没有任何结果。

这反而是个好消息。

说明至少没有发现一个类似:

1
gtk-application-prefer-dark-theme=true

这样的东西在背后搞鬼。

第六关:Xfce 本身真的没问题

再看 Xfce 的完整配置:

1
xfconf-query -c xsettings -lv

其中最关键的是:

1
/Net/ThemeName      Kali-Light

所以 Xfce 这一层可以基本排除。但这时候我突然意识到:

Xfce 说自己是 Light,并不代表所有程序都会去问 Xfce。

现代 Linux 应用还有另外一条路。

第七关:GSettings 才是真正的坑

于是检查:

1
gsettings get org.gnome.desktop.interface gtk-theme

得到:

1
'Kali-Light'

看起来一切正常。但是再检查:

1
gsettings get org.gnome.desktop.interface color-scheme

结果却是:

1
'prefer-dark'

这一下问题基本浮出水面了。

注意,这两个东西不是一回事:

  • gtk-theme -> Kali-Light

而:

  • color-scheme -> prefer-dark

也就是说,我的系统实际上处于一种很奇怪的状态:

主题是 Light,但系统颜色偏好却是 Dark。

这就像把房子的墙刷成白色,然后在门口挂了一个牌子:

“本屋偏好黑色。”

第八关:XDG Desktop Portal 终于把证据补齐

为了确认现代应用到底拿到了什么信息,又检查了:

1
2
3
4
5
6
dbus-send --session --print-reply \
  --dest=org.freedesktop.portal.Desktop \
  /org/freedesktop/portal/desktop \
  org.freedesktop.portal.Settings.Read \
  string:org.freedesktop.appearance \
  string:color-scheme

结果是:

1
uint32 1

这里我还踩了一个坑。一开始我把 1 错误地理解成了 Light。后来查了 XDG Desktop Portal 的规范才发现,正确的定义是:

1
2
3
0 = No preference
1 = Prefer dark
2 = Prefer light

所以uint32 1实际上是在告诉应用:

我偏好 Dark。

这一下所有事情突然串起来了。

真正的问题

整个系统当时实际上是:

  • Xfce
    • ThemeName = Kali‑Light ✅
  • GSettings
    • gtk‑theme = Kali‑Light ✅
    • color‑scheme = prefer‑dark ❌
  • XDG Desktop Portal
    • color‑scheme = 1 ❌ Dark
  • Chrome
    • 看到系统偏好 Dark ❌
  • Firefox
    • 看到系统 / 主题偏好 Dark ❌

所以之前一直在折腾 Firefox、Chrome、GTK,其实有点走偏了。

真正的问题在更下面一层:

Xfce 的主题已经切成 Light,但是 GSettings 的系统颜色偏好仍然停留在 Dark。

最后的解决办法反而非常简单

执行:

1
gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'

然后检查:

1
gsettings get org.gnome.desktop.interface color-scheme

变成:

1
'prefer-light'

再重新打开 Chrome,结果正常了,Firefox 也恢复正常。这时候才真正意识到,前面折腾了那么久,其实只差这一行。

最终配置

以后在 Kali Xfce 上切换浅色,我会按照下面这个顺序来。

① Xfce

Settings 设置 → Appearance 外观 → Style 样式

选择:Kali-Light

Appearance 外观 → Icons 图标

选择:Flat-Remix-Blue-Light

Settings 设置 → LightDM桌面管理器(GTK界面):设置 → 界面

选择:Kali-Light

② 系统颜色偏好

执行:

1
gsettings set org.gnome.desktop.interface color-scheme 'prefer-light'

检查:

1
gsettings get org.gnome.desktop.interface color-scheme

应该是:'prefer-light'

③ Qt

1
2
qt5ct
qt6ct

(也可以在设置中打开)

选择 Kali-Light

④ QTerminal

QTerminal 的终端配色在 会话 → 参数配置 → 界面设置 → 终端颜色 里单独调整。

⑤ Firefox / Chrome

保持 系统/Automatic 即可。

总结

这次踩坑最大的收获是终于理解了为什么这件事会这么绕:Linux 桌面里的“主题”和“颜色偏好”不是一回事,而 Xfce、GTK、Qt、GSettings、XDG Portal、Firefox、Chromium 又各自可能读取不同的东西。

所以看到“Xfce 明明已经 Light,但 Chrome/Firefox 还是 Dark”,第一反应不应该是继续换主题,而应该开始检查:

1
gsettings get org.gnome.desktop.interface color-scheme

如果它还是:'prefer-dark',那基本就找到方向了。