处理 fcitx5 的文字候选框在 tg 客户端上闪烁的问题
本文最后更新于:2024年8月12日 下午
文章开头,先要感谢 fcitx5 的开发者 老K 帮我 debug 这个问题
鬼畜的文字候选框
在新装的 Fedora 36 KDE Wayland 下使用 fcitx5 时遇到了文字候选框前后移动晃眼的问题(如下图)
解决方案
当我向老K提出这个问题上的时候,老K告诉我这是预期行为,一共有两个解决方案。
- 使用 qt 的 text input
- 关掉 kwin 的淡入淡出特效
但由于我并不熟悉 KWin 的特效,所以我选择了前者的方案。
首先,需要确保自己的 Plasma 版本在 5.24 或以上,fcitx5 的版本号在 5.0.14 以上。
然后我们需要让 KWin 去启动 fcitx5。KCM 为此提供了一个非常简单的方式,如下图
随后需要确保环境变量没有设置 QT_IM_MODULE
。一定要确保这个变量不存在,连空也不行,必须是 unset。
理论上来说,是不需要重启的,但我的环境变量是 fcitx5-autostart
这个 rpm 包在 /etc/profile.d/fcitx5.sh
里面设置的,我需要重启系统来使新的环境变量生效。
重启后,如果没有什么意外的话,就算成功了。
绝对不会缺席的意外
很遗憾,我遇到了意外。
完成上述操作后,文字候选框依然有问题。
在老K的正确推测下,是因为我在 Fedora 下曾经使用过 im-settings
,该程序在 $HOME/.config/environment.d/
路径下重新帮我设置回了 QT_IM_MODULE
这个变量,从而使得 tg 启动时还在使用 IM MODULE,而不是预期的 qt text input。
删除这两个影响环境变量的文件后,在 tg 输入时,fcitx5 的文字候选框恢复了正常。
debug 过程中用到的两个方式
dbus-send
1 |
|
运行如上命令后,我得到了如下的输出
1 |
|
老K指出,出现了 telegram 的那一行表明 tg 还是在用 IM Module,所以是环境变量有问题
/proc 查看程序运行时的环境变量
参考资料
Use Plasma 5.24 to type in Alacritty (Or any other text-input-v3 client) with Fcitx 5 on Wayland
Candidate window is blinking under wayland with Fcitx 5
注: 上述参考资料均已在 web.archive.org
和 archive.ph
做过存档,如遇到原站点无法访问的情况,可自行前往这两个站点查看存档。