概述
参考文档:
fcitx5 是输入法框架,拼音等具体输入法是它的插件(
fcitx5-chinese-addons)GNOME 下失灵通常不是 fcitx5 坏了,而是三件事:环境变量没进图形会话、GNOME 自带的 IBus 抢占输入、应用没加载 fcitx 的 IM 模块
数据流:
flowchart LR A["GTK 应用"] -->|"GTK_IM_MODULE=fcitx"| B["fcitx5 GTK 模块"] C["Qt 应用"] -->|"QT_IM_MODULE=fcitx"| D["fcitx5 Qt 模块"] B & D -->|"D-Bus"| E["fcitx5 守护进程"] E --> F["拼音等引擎"]
Mutter 未实现 Wayland 的 input-method 协议,所以靠各 GUI 工具包自己的 IM 模块绕开协议直连 fcitx5,环境变量因此成了生命线
快速开始
安装(CachyOS 与 Arch 系):
console$ pacman -S fcitx5-im fcitx5-chinese-addonsfcitx5-im组含fcitx5本体、fcitx5-gtk(GTK 3 与 4 模块)、fcitx5-qt与配置工具fcitx5-configtool
把环境变量写进
~/.config/environment.d/im.conf:iniGTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx- Wayland 会话读的是 environment.d,
~/.bashrc与~/.xprofile对 GNOME Wayland 不生效,这是第一大坑
- Wayland 会话读的是 environment.d,
注销重登,
fcitx5-configtool里把"Pinyin"从可用列表加到当前输入法列表在
设置 → 键盘里把输入源只留一个英文键盘,Ctrl+Space切换中英,输入由 fcitx5 接管
GNOME 的坑
- IBus 抢占:
- GNOME 把 IBus 深度嵌进 Shell,输入源列表里一旦添加了中文输入法就轮不到 fcitx5
- 排查:输入源只保留
English (US)或对应键盘布局,中文输入全部交给 fcitx5
- 托盘没有键盘图标:GNOME 默认无托盘,装 AppIndicator 扩展找回,或接受只用
fcitx5-configtool管理 - 切换键冲突:
Ctrl+Space若与 GNOME 或应用冲突,在fcitx5-configtool → 全局选项里换 im-config与imsettings是 Debian 系的工具,Arch 系不存在,照搬旧教程会找不到北
应用侧适配
Chromium 与 Electron 应用(VS Code、Discord 等)在 Wayland 下默认不接 fcitx5:
- 启动参数加
--enable-wayland-ime启用 Wayland 输入法支持 - 或让该应用走 X11(
--ozone-platform=x11),靠XMODIFIERS工作
- 启动参数加
Flatpak 应用在沙箱里看不到宿主的 fcitx5,需要放行:
console$ flatpak override --user --env=GTK_IM_MODULE=fcitx \ --env=QT_IM_MODULE=fcitx --env=XMODIFIERS=@im=fcitx \ --filesystem=xdg-run/fcitx5 --talk-name=org.fcitx.Fcitx5终端模拟器大多随 GTK 正常工作;Wayland 原生的自绘应用(kitty 等)按各自文档单独配
排查清单
- 万能第一步:
fcitx5-diagnose,逐项列出环境变量、IM 模块注册与守护进程状态,照着红字修 - 验证变量真的进了会话:在图形会话的终端里
echo $GTK_IM_MODULE,空的就是没被 systemd 用户会话读到 - 手动前台拉起看报错:
fcitx5 -r -d重启守护进程 - 自启动:fcitx5 自带
/etc/xdg/autostart/org.fcitx.Fcitx5.desktop,Wayland 会话一般无需手配 - 定位手段:登录界面切到
GNOME on X11会话,X11 下好使而 Wayland 下不行,基本锁定 IM 模块没加载或应用不支持,再按应用侧一节处理
相关阅读
- GNOME 桌面:Shell、扩展与 gsettings 体系
- Linux 显示协议与图形栈:为什么 Wayland 的输入法与 X11 不一样