← 返回首页

Ubuntu 26.04 中文输入法:从 fcitx5 换回 IBus(GNOME Wayland 候选框错位)

2026-05-25 · LinuxWayland输入法Ubuntu 26.04

环境: Ubuntu 26.04,GNOME 50、默认 Wayland、分数缩放 167%。

在 GNOME / Wayland 上开了 167% 分数缩放后,fcitx5 的候选词窗口在 Firefox、Edge 里错位:候选框飘到离光标很远的地方。换成 IBus 之后就正常了。这背后是 Wayland 输入法架构的一个关键事实。

根因:mutter 只把 text-input 协议给 IBus

Wayland 下输入法要正确定位候选框,依赖合成器通过 text-input 协议告诉 IME 光标在哪。但 GNOME 的 mutter 不会把这个协议暴露给第三方输入法(fcitx5 之类),它只内建集成 IBus。

于是 fcitx5 拿不到合成器的光标位置,只能退化成自己根据应用上报的坐标画候选框——而这个坐标在分数缩放下是错的,候选框就飘了。

IBus 是 GNOME 原生的,候选框由合成器直接定位,所以在分数缩放下对原生 Wayland 应用既正确又清晰。

顺带澄清:GNOME 设置里那个 “Built-in Scaling for Legacy Apps” 开关 = mutter 的 xwayland-native-scaling,只影响 XWayland 应用(如 Edge):开 = 清晰但位置可能不对,关 = 位置对但模糊。它不是输入法问题的解。

解决:切到 ibus-libpinyin

(搜狗输入法只有 fcitx 版,所以这里用 libpinyin。)配置要点:

1. /etc/environment —— 让 Wayland 应用走 mutter 的 text-input,而不是工具包的 IM 模块:

# 删掉这两行(否则 GTK/Qt 应用会走工具包 IM 模块)
# GTK_IM_MODULE=...
# QT_IM_MODULE=...
# 只保留:
XMODIFIERS=@im=ibus

2. 切换 IM 框架:

im-config -n ibus      # 写入 ~/.xinputrc: run_im ibus

3. GNOME 输入源设为 [('xkb','us'), ('ibus','libpinyin')],用 Super+Space 切换。

4. 禁掉 fcitx5 自启:

mv ~/.config/autostart/org.fcitx.Fcitx5.desktop \
   ~/.config/autostart/org.fcitx.Fcitx5.desktop.disabled

5. Edge / Chromium 需要显式开 Wayland IME(覆盖 .desktop 的 Exec):

--ozone-platform=wayland --enable-wayland-ime

这套在 IBus + GNOME 下生效;换成 fcitx5 则不行(回到上面的根因)。

注意事项

小结

GNOME Wayland 下做中文输入,顺着系统走用 IBus 最省心:候选框由合成器定位,分数缩放、HiDPI 都不飘。fcitx5 不是不好,而是 GNOME 没给它 Wayland text-input 的"户口",注定在分数缩放下要打补丁。要用 fcitx5 的全套功能,KDE 或带 text-input 支持的合成器才是它的主场。