GNOME 太难用了,所以换 KDE
这台机器是 7 月 8 日装的,GNOME 在上面只活了两天。
而且它还是装错的。装 Debian 选软件那一步,我记得勾的是 KDE Plasma,重启后迎面而来的却是 GNOME。最可疑的是安装器那屏复选框:GNOME 默认勾着,KDE 要另外选,两行还长得差不多。到底是我手抖,还是安装器没认,现在已经无从验尸。系统都装完了,我决定先忍。
换 KDE 不是心血来潮。严格说也不算「换」,KDE 才是我一开始想装的桌面。GNOME 只用了两天就让我开始修桌面本身,而不是用这台机器。这就足够了。
先把 KDE 装上再说
Debian 13 里最省事的入口是 kde-standard,它会带上 Plasma 和一组常用应用。我没在这一步就删 GNOME。先把新桌面装好、登录验证,不然很容易顺手把显示管理器也拆了。
sudo apt update
sudo apt install kde-standard安装时如果问默认显示管理器,选 SDDM。装完注销,在登录界面选 Plasma Wayland。进桌面后先看两个变量,不要凭壁纸猜自己进了哪个会话:
printf 'desktop=%s\nsession=%s\n' "$XDG_CURRENT_DESKTOP" "$XDG_SESSION_TYPE"
# desktop=KDE
# session=wayland桌面、显示管理器和 Wayland 会话都是宿主机的图形栈,这里不用 Docker。真把 Plasma 塞进容器,显卡、输入法、D-Bus 和登录会话只会一起变成新坑。
GNOME 这两天都干了什么
- 桌面基本功能靠扩展拼。默认没有任务栏,窗口连最小化按钮都没有,装了 dash-to-panel 和 arcmenu 才拼出一个正常人能用的桌面。而这些全是第三方扩展,GNOME 一升级就可能集体阵亡。
- 想调个外观,libadwaita 应用根本不理你的主题,改了等于没改。
- 最离谱的一条:这台机器不接显示器,24 小时开着当 Sunshine 串流主机。GNOME 闲置 15 分钟后却会自动挂起,所有远程访问一起断。最后改了 gsettings 里的空闲策略,又把四个 suspend target 全 mask 掉,它才肯保持清醒。至于为什么一台插着墙电的台式机会套上这条策略,我没查到可靠结论,就不替它编理由了。
一台台式机要靠 mask 系统服务才能保证不睡着,这日子没法过了。所以昨天把桌面换成了 KDE Plasma,Wayland 会话。
换完第一关:Telegram 候选框在闪
KDE 刚装好,输中文的时候 Telegram 候选框开始闪。不是偶尔闪一下,是那种“我到底有没有选中这个字”的闪。打字本来是输入内容,最后变成了观察候选框刷新频率。
元凶是 GNOME / X11 时代留下来的环境变量。以前的教程都让你加这三行:
QT_IM_MODULE=fcitx
GTK_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx按 fcitx5 官方文档,KDE Plasma Wayland 的推荐配置是全局只留 XMODIFIERS,让原生 Wayland 的 Qt / GTK 应用走 text-input 协议;只有少数仍跑 X11 / XWayland 的程序,才按应用单独补 QT_IM_MODULE 或 GTK_IM_MODULE。这台机器全局再设 QT_IM_MODULE,Telegram 就同时挂上了两条输入通道。
坑的地方在于:配置文件删干净了,闪烁照旧。因为 systemd 的用户会话把旧值攥在手里不放:
$ systemctl --user show-environment | grep IM_MODULE
QT_IM_MODULE=fcitx # 文件已经删了,值还活着
GTK_IM_MODULE=fcitxKWin 拉起来的 fcitx5 和 Telegram 都继承了这个脏值。用 fcitx5 的 DebugInfo 一看,同一个 Telegram 同时挂着 frontend:dbus 和 frontend:wayland 两个 InputContext。两条通道抢一个候选框,难怪会闪:
$ dbus-send --print-reply --dest=org.fcitx.Fcitx5 /controller \
org.fcitx.Fcitx.Controller1.DebugInfo
# 这里要看当前焦点是否被两条前端同时接管修法三步。~/.config/environment.d/im-fcitx.conf 只留一行:
XMODIFIERS=@im=fcitxfcitx5 的启动交给 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 下它一般不至于跳出来捣乱,但既然不用了,就在用户级别 mask 掉,免得以后排查输入法时多一个幽灵选项。
KDE 本身装得很快。麻烦的是旧桌面留下的配置还在生效:显示器配置、输入法变量、自启项、服务和脚本,每个都得单独查。
重启后的检查清单
- 自动登录直接进 KDE Plasma Wayland 会话
pgrep fcitx5有进程,随便找个输入框能切中文- Telegram 候选框不闪
- Sunshine 客户端连上切虚拟屏,断开切回物理输出
- 本地那几个服务和端口都还在监听
目前全绿。剩下的就是慢慢发现 KDE 还有哪些地方不认识 GNOME 留下来的东西。
KDE 当然也会有自己的毛病。至少现在,它肯把任务栏、最小化按钮和设置选项直接给我。等它也把我惹毛了,再写下一篇。
COMMENTS 留言
READING MEMORY CARD…