Plasma 6.4 下,XWayland 的 Electron 和其他软件无法正常使用 fcitx5

问题如题。已知出现问题的软件有:

  • Brave Browser (v138 Chromium based, pure Wayland): 据说问题会在 v139 based 下的版本修复,但 Brave 更新还需要时间,bug 是浏览器来源,但先前 Plasma 版本下可正常使用的 text-input-v1 协议在 Plasma 6.4+ 中不可使用;
  • Cherry Studio:Xwayland 模式,输入法无法被调用;即使输入法能够被调用,也无法输入任何中文文字;
  • QQ (flatpak, Xwayland 模式):问题同上,通过权限管理 force full Wayland 可用;
    系统版本:openSUSE Tumbleweed 20250626;
    DE 版本:KDE Plasma 6.4.0 和.1,Wayland;
    fcitx5 版本:5.1.13-1,所有配置按照 fcitx wiki 进行。

有何可能的解决方案?或者应该收集什么 log,往哪里投 bug issues?
edit 1: 似乎需要强制给定 GTK_IM_MODULE 给在 XWayland 中运行的 Electron app,以前版本的 KDE 下不需要这种设置。
edit 2: Cherry studio 强制使用 Wayland ozone hint 可以正常使用。

https://wiki.archlinuxcn.org/wiki/Fcitx5#Xwayland

看了下,之前这几个 gtk 的设定全都加过了。至于为什么 Plasma <= 6.3 以前可用、>= 6.4 后不可用,就不太清楚了。

确保有问题的软件已打开、光标位于输入框内,然后执行 fcitx5-diagnose 看看结果吧。

我在重新确认设置、并在进行日常使用且非诊断性的一系列操作后,突然恢复正常了,原因未知。我明天把台式机更新到同一个 snapshot 之后再观察一下情况,如果存在相同情况,我再快速抓一下 log 看看。
edit: 刚才在飞书也遇到了无法输入的情况,我忘记抓 log,直接在启动项后面加上 ozone 参数和 enable-wayland-ime,输入法正常了,且去掉之后回到 XWayland 也正常了。

我发一下 fcitx-diagnose 的输出。现在被迫将 QT_IM_MODULE 和 GTK_IM_MODULE 重新加入/etc/environment,但还是会出现 QQ flatpak 以及其他部分软件的输入框无法输入、候选框出现在屏幕左上角的问题。该问题偶尔出现。
fcitx-diagnose.txt (24.9 KB)

不要设置那两个环境变量。请在出问题的时候运行 fcitx5-diagnose(保持有问题的软件打开、并且光标位于有问题的输入框内)。
你有很多软件在使用 XIM。
flatpak 的软件我太不了解。

不设置环境变量的 log 如下:
fcitx-diagnose.txt (26.8 KB)
问题复现非常麻烦,比如我打开了一定量的软件,前 (N-1) 个全部正常,然后第 N 个就不好使了;或者是打开 N 个软件,一开始全部好使,切换到软件 A 输入后,软件 B 就不能用了,关闭重新开启第 N 个软件也不一定能解决。上述的 log 就是这个情况,我现在在 Wayland ozone hint 的 Vivaldi 下能够正常输入,但现在切回在 XWayland 下运行的 QQ flatpak 就完全无法输入,候选框提示直接被顶到屏幕左上角,按空格无法上屏。似乎具有极大的随机性。
至于环境变量,仅根据身边统计学,有人在之前版本的 Plasma 6 on Wayland 遇到 fcitx5 相关问题,直接忽略了 wiki 而设置了环境变量,fcitx 没再出过问题。但现在这个问题是有无环境变量都无法缓解的。

仔细看了下 log,似乎在不知道什么地方系统自己把 QT_IM_MODULE 和 GTK_IM_MODULE 设置了。我把这两个在.zshrc 里强制加了两行 unset。但在进行了如下的测试后,依然有相同的情况。打开的顺序是:
Konsole-WPS 文字(命令行中带环境变量启动)-Vivaldi 7.4 - Xmind flatpak 最新 - 飞书 XWayland (Electron) - Zotero (MOZ_ENABLE_WAYLAND=1) - Obsidian Wayland - QQ Electron Xwayland - WeChat Qt XWayland - Goldendict-ng Qt.
在打开 Goldendict-ng 后,fcitx 出现了问题。这时 QQ、微信、飞书(QQ 和飞书没有在给定环境变量,应该是走了系统 gtk 设置;微信使用 QT_IM_MODULE=fcitx)也同时出现了这个问题,其他所有软件输入法功能正常。
log 如下:
fcitx-diagnose-vivaldi.txt (29.4 KB)
fcitx-diagnose-wechat.txt (29.4 KB)
** 以上问题在 KDE Plasma on Wayland <= 6.3.5 从来没有出现过,即使环境变量设置有问题。**

为了硬解码支持,我选择开启 ozone wayland:

# Use ozone wayland for vpu decoding
export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --ozone-platform-hint=wayland"

# Enable V4L2 decoding and  NV12 direct rendering
export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --enable-features=AcceleratedVideoDecoder,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder"

没遇到过输入法的问题

新发现:
在 Plasma 6.1 前后,我将 sddm 由在 X11 下运行改成了使用 Wayland 运行(纯 Wayland 环境),到 Plasma 6.3.5 都是完全正常的,直到 Plasma 6.4(也就是上述的输入法问题)。将 sddm 重新改回在 sddm 下运行,似乎输入法问题解决了。

我突然有个想法啊:你这 com.github.tchx84.Flatseal 的连接这么多,是不是它还会越来越多、越来越多,直到最后把默认的 1024 个文件描述符给耗尽了导致无法创建新的连接?

可以检查 fcitx5 的日志看看,大概在 journalctl 里。也可以在出问题的时候看看 fcitx5 进程的文件描述符使用情况(用 lsfd 或者 lsof 命令可以查看,htop 里对着进程按 l 也可)。

看了下 systemd log 里,fcitx5 最明显的问题是这个(在我的两台设备里都有):
屏幕截图_20250704_142432
文件描述符也看不出什么东西,这方面的 debug 还需要一定指导。
另外不知道为什么系统总会自己把 QT_IM_MODULE 和 GTK_IM_MODULE 设置上,发现是很久以前在/usr/lib/environment.d 里设置的,已经删除了。

EDIT:在实际出现问题的时候又抓了下 log,提示这个:


但这个是系统设置页的报错,与实际问题无关。说明这个问题【似乎】不是在 fcitx 的 log 里能体现的。
QQ Flatpak, X11 only, GTK_IM_MODULE=fcitx.

那个 crash log 只是在说 fcitx5 因为收到 SIGTERM 信号退出了而已。不是啥问题。

那你看一下出问题时的 fcitx5 的文件描述符使用情况吧。

在一次 bug 出现后在 htop 截了一下:




看来不是我想的那样。

我今天翻网页的时候看到有人在两年前的 Arch 论坛上说 fcitx 和 KDE 自己的键盘布局会出冲突,我又想了一下,最近我在 Plasma settings 里关掉这个键盘布局开关,重启就又恢复了,也不知道是为什么,可能真的有点儿什么关系?而且另一个指向可能是系统冲突的证据是,之前我在 QQ 打字的时候,原本输入框是正常的,在打字到一半的时候突然就出问题了,可能是有什么东西起了冲突。
EDIT: 无关,禁用了也出现该问题。

发现了极为奇怪的现象:我去看 openSUSE Wiki 的时候提到可以安装 flatpak 版 fcitx5 以获得最新版本的 Rime,我就顺手死马当作活马医了,然后惊讶地发现 flatpak 版居然没有出现这些问题。一天后再次测试,还是出现了这个问题。即使更新 KDE 到 Plasma 6.4.2,也依然出现这个问题。

疑似是上游问题,现已经查阅到有其他类似情况的 bug 报告:https://bugs.kde.org/show_bug.cgi?id=506095