惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
博客园 - Franky
J
Java Code Geeks
V
Visual Studio Blog
G
Google Developers Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
博客园 - 【当耐特】
IT之家
IT之家
I
InfoQ
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
处理 fcitx5 的文字候选框在 tg 客户端上闪烁的问题 | 竹林里...
竹林里有冰 · 2022-07-03 · via 竹林里有冰的博客

文章开头,先要感谢 fcitx5 的开发者 老K 帮我 debug 这个问题

鬼畜的文字候选框#

在新装的 Fedora 36 KDE Wayland 下使用 fcitx5 时遇到了文字候选框前后移动晃眼的问题(如下图)

fcitx5 blinkingfcitx5 blinking

解决方案#

当我向老K提出这个问题上的时候,老K告诉我这是预期行为,一共有两个解决方案。

  • 使用 qt 的 text input
  • 关掉 kwin 的淡入淡出特效

但由于我并不熟悉 KWin 的特效,所以我选择了前者的方案。

首先,需要确保自己的 Plasma 版本在 5.24 或以上,fcitx5 的版本号在 5.0.14 以上。

然后我们需要让 KWin 去启动 fcitx5。KCM 为此提供了一个非常简单的方式,如下图

选择 fcitx5 就好啦选择 fcitx5 就好啦

随后需要确保环境变量没有设置 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#

dbus-send --print-reply=literal --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.DebugInfo

运行如上命令后,我得到了如下的输出

   Group [x11::1] has 0 InputContext(s)
Group [wayland:] has 5 InputContext(s)
  IC [a50fe208d42e4611b240c0b66a2fa0b9] program:konsole frontend:dbus cap:e001800060 focus:1
  IC [d7d4d5c05e9c445aab1af9c7dfb5fbd4] program:telegram-desktop frontend:dbus cap:e001800060 focus:0
  IC [ac72ec3edf58481bbdf838352520efd5] program:krunner frontend:dbus cap:e001820060 focus:0
  IC [d8b450176e204953837248f786204c29] program:plasmashell frontend:dbus cap:e001800060 focus:0
  IC [df252979343d42ebbe9bd82ead6ff194] program: frontend:wayland cap:40 focus:0
Input Context without group

老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.orgarchive.ph 做过存档,如遇到原站点无法访问的情况,可自行前往这两个站点查看存档。