BOB CHEN

NEW POST  ·  2026-07-11

GNOME
→ KDE

LOG FILE / SAVE 003

GNOME 太难用了,所以换 KDE

这台机器是 7 月 8 日装的,GNOME 在上面只活了两天。

而且严格说,它是个装错的货。装 Debian 选软件那一步,我记得清清楚楚勾的是 KDE Plasma,装完重启,迎面而来的却是 GNOME。最大嫌疑是安装器那一屏软件选择:GNOME 默认就勾着,KDE 要自己另外勾,一排复选框长得一模一样。到底是我手抖没勾中,还是它压根没认,已经无从验尸。系统都装好了,总不至于为个桌面重装一遍——我决定忍着用。

先把话说清楚:换 KDE 不是心血来潮,甚至算不上“换”——那本来就是我下单的桌面。真正让我两天就动手的,是 GNOME 实在太难用了:装完系统的头两天,我大部分时间不是在用这台机器,而是在跟桌面环境搏斗。

GNOME 这两天都干了什么

  • 桌面基本功能靠扩展拼。默认没有任务栏,窗口连最小化按钮都没有,装了 dash-to-panel 和 arcmenu 才拼出一个正常人能用的桌面。而这些全是第三方扩展,GNOME 一升级就可能集体阵亡。
  • 想调个外观,libadwaita 应用根本不理你的主题,改了等于没改。
  • 最离谱的一条:这台机器不接显示器,24 小时开着当 Sunshine 串流主机。GNOME 看 /sys/class/power_supply 底下是空的,就把这台插着墙电的台式机当成快没电的笔记本,按电池策略 15 分钟自动挂起——所有远程访问全断。最后靠 gsettings 改了三个键、systemd 把四个 suspend target 全 mask 掉,它才肯保持清醒。

一台台式机要靠 mask 系统服务才能保证不睡着,这日子没法过了。所以昨天把桌面换成了 KDE Plasma,Wayland 会话。

换完第一关:Telegram 候选框在闪

KDE 刚装好,输中文的时候 Telegram 候选框开始闪。不是偶尔闪一下,是那种“我到底有没有选中这个字”的闪。打字本来是输入内容,最后变成了观察候选框刷新频率。

元凶是 GNOME / X11 时代留下来的环境变量。以前的教程都让你加这三行:

X11 时代教程的老三样ENV
QT_IM_MODULE=fcitx
GTK_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

但 Wayland 下正确的做法是:Qt / GTK 应用走 Wayland 原生的 text-input 协议,候选框由 fcitx5 自己画;XMODIFIERS 只留给 XWayland 里的老程序。再设 QT_IM_MODULE,等于让应用同时挂两条输入通道。

坑的地方在于:配置文件删干净了,闪烁照旧。因为 systemd 的用户会话把旧值攥在手里不放:

配置文件删干净之后SHELL
$ systemctl --user show-environment | grep IM_MODULE
QT_IM_MODULE=fcitx      # 文件已经删了,值还活着
GTK_IM_MODULE=fcitx

KWin 拉起来的 fcitx5 和 Telegram 都继承了这个脏值。用 fcitx5 的 DebugInfo 一看,同一个 Telegram 同时挂着 frontend:dbusfrontend:wayland 两个 InputContext——两条通道抢一个候选框,就闪:

看每个应用挂了几条输入通道SHELL
$ dbus-send --print-reply --dest=org.fcitx.Fcitx5 /controller \
    org.fcitx.Fcitx.Controller1.DebugInfo
# 健康状态:每个应用只该出现一条 InputContext

修法三步。~/.config/environment.d/im-fcitx.conf 只留一行:

~/.config/environment.d/im-fcitx.confENV
XMODIFIERS=@im=fcitx

fcitx5 的启动交给 KWin,不再用 ~/.xprofile 之类的自启:

~/.config/kwinrcINI
[Wayland]
InputMethod=/usr/share/applications/org.fcitx.Fcitx5.desktop
VirtualKeyboardEnabled=true

最后把会话里缓存的脏值清掉,注销重登:

清脏值,然后注销重登SHELL
$ systemctl --user unset-environment QT_IM_MODULE GTK_IM_MODULE \
    SDL_IM_MODULE GLFW_IM_MODULE

重新登录之后,Telegram 不闪了,Ctrl+Space 切中文正常。口诀:候选框行为不对,先看 systemctl --user show-environment 里有没有脏值,别急着怪 fcitx5。

GNOME 留下的其他遗产

输入法只是第一关。GNOME 的 ~/.config/monitors.xml KDE 不认,显示器分辨率、位置和缩放要看 KDE 自己的 ~/.config/kwinoutputconfig.json

Sunshine 的显示器切换脚本也得换,gnome-display-switch 改成了 plasma-display-switch。客户端连进来切虚拟屏、断开切回物理屏,逻辑没变,变的是桌面环境背后的命令。

还有一个 GNOME 留下的 IBus 服务。KDE 下它一般不至于跳出来捣乱,但既然不用了,就在 user scope 里 mask 掉,免得以后排查输入法时多一个幽灵选项。

所以换桌面环境最容易踩的坑,不是“KDE 装没装好”,而是旧桌面留下的一堆配置还在默默生效:显示器配置、输入法变量、自启项、服务、脚本,各有各的主人。

重启后的检查清单

  • 自动登录直接进 KDE Plasma Wayland 会话
  • pgrep fcitx5 有进程,随便找个输入框能切中文
  • Telegram 候选框不闪
  • Sunshine 客户端连上切虚拟屏,断开切回物理输出
  • 本地那几个服务和端口都还在监听

目前全绿。剩下的就是慢慢发现 KDE 还有哪些地方不认识 GNOME 留下来的东西。

换桌面环境像搬家:家具搬过去不难,难的是抽屉里那些不知道属于谁的螺丝。但至少 KDE 让我觉得,设置是给人用的。