问题描述

在 CachyOS (基于 Arch Linux) 或其他 Linux 发行版的 Wayland 环境下,使用 Flatpak 安装的 Obsidian 进行写作时,遇到了中文输入法(如 Fcitx5)候选框不跟随光标的问题。

具体表现为输入可能还没选呢,就上屏了。

问题分析

这是一个经典的 Electron + Wayland + Input Method 兼容性问题。 虽然较新的 Electron 版本开始支持 Wayland,但对 IME(输入法协议)的支持依然不稳定。特别是 Flatpak 版本运行在沙箱中,如果环境变量没有正确传递,应用就无法获知系统的输入法配置,导致它退回到默认的“哑巴”模式。

解决方案的核心思路:强制 Obsidian 运行在 X11 (XWayland) 模式下,并手动通过 flatpak override 将输入法相关的环境变量注入到沙箱中。

解决方案

第一步:确认安装方式

首先确保你安装的是 Flatpak 版本。 包名通常为:md.obsidian.Obsidian

1
flatpak list

88c749088421fb181e9f9e92a9a0d020.png

第二步:执行修复命令

打开终端,依次运行以下命令:

1. 屏蔽 Wayland 接口,强制使用 X11 后端 这是最关键的一步,迫使 Electron 回退到兼容性更好的 X11 模式。

1
flatpak override --user --nosocket=wayland md.obsidian.Obsidian

2. 确保 X11 权限开启(通常默认开启,为了保险)

1
flatpak override --user --socket=x11 md.obsidian.Obsidian

3. 注入输入法环境变量 Flatpak 容器内默认可能没有读取到宿主机的输入法配置。我们需要手动告诉它使用 Fcitx(如果你用的是 IBus,将 fcitx 改为 ibus)。

1
2
flatpak override --user --env=GTK_IM_MODULE=fcitx md.obsidian.Obsidian
flatpak override --user --env=XMODIFIERS=@im=fcitx md.obsidian.Obsidian

注意:QT_IM_MODULE 对于基于 Electron(Chromium)的应用通常不是必须的,但在某些环境下也可以加上。

第三步:重启应用

彻底关闭 Obsidian(确保后台进程已结束),然后重新打开。 现在,输入法候选框应该完美跟随光标了。

还原配置(如果需要)

如果未来 Obsidian 修复了 Wayland 下的输入法问题,你可以通过以下命令重置所有修改:

1
flatpak override --user --reset md.obsidian.Obsidian

总结

在 Linux 下使用 Electron 应用(如 VSCode, Obsidian, Discord),如果遇到输入法问题,“强制 X11 + 注入环境变量” 通常是目前最稳妥的万能解法。