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 时代留下来的环境变量。以前的教程都让你加这三行:
QT_IM_MODULE=fcitx
GTK_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
但 Wayland 下正确的做法是:Qt / GTK 应用走 Wayland 原生的 text-input 协议,候选框由 fcitx5 自己画;XMODIFIERS 只留给 XWayland 里的老程序。再设 QT_IM_MODULE,等于让应用同时挂两条输入通道。
坑的地方在于:配置文件删干净了,闪烁照旧。因为 systemd 的用户会话把旧值攥在手里不放:
$ systemctl --user show-environment | grep IM_MODULE
QT_IM_MODULE=fcitx # 文件已经删了,值还活着
GTK_IM_MODULE=fcitx
KWin 拉起来的 fcitx5 和 Telegram 都继承了这个脏值。用 fcitx5 的 DebugInfo 一看,同一个 Telegram 同时挂着 frontend:dbus 和 frontend:wayland 两个 InputContext——两条通道抢一个候选框,就闪:
$ dbus-send --print-reply --dest=org.fcitx.Fcitx5 /controller \
org.fcitx.Fcitx.Controller1.DebugInfo
# 健康状态:每个应用只该出现一条 InputContext
修法三步。~/.config/environment.d/im-fcitx.conf 只留一行:
XMODIFIERS=@im=fcitx
fcitx5 的启动交给 KWin,不再用 ~/.xprofile 之类的自启:
[Wayland]
InputMethod=/usr/share/applications/org.fcitx.Fcitx5.desktop
VirtualKeyboardEnabled=true
最后把会话里缓存的脏值清掉,注销重登:
$ 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 让我觉得,设置是给人用的。