适用环境:Ubuntu 20.04 Focal + GNOME + X11。文中第三方 PPA 仅用于 Focal;更新的 Ubuntu 版本应优先使用发行版官方仓库。
Ubuntu 默认集成 IBus,部署简单,但在中文拼音场景中,候选词联想偏弱,偶尔还会出现切换或输入异常。为改善日常中文输入体验,先通过 DeepSeek 比较 IBus、Fcitx5、Rime 等方案,再由 Codex 在 Ubuntu 20.04 Focal + GNOME + X11 环境中完成实际安装和调试。
相关项目:
1. 为什么选择 Fcitx5
DeepSeek 的讨论主要完成了方案筛选:
- IBus 与 Ubuntu/GNOME 集成最深,适合不想配置的用户。
- Fcitx5 响应快、主题和按键可定制,中文插件较完整。
- Rime 自定义能力更强,但维护词库和方案的成本也更高。
- 搜狗等依赖旧框架的方案不适合作为新安装首选。
本次目标不是追求最多插件,而是解决三个实际问题:
- 拼音候选和联想体验弱。
- 中英文切换偶发异常。
- 希望候选框可换主题,并让所有窗口共享中英文状态。
GitHub Star 只能反映一部分热度。输入法属于桌面基础设施,用户规模和 Star 数不能直接代表可用性。
2. Ubuntu 20.04 的版本陷阱
Ubuntu 20.04 官方仓库提供的是较早的 Fcitx5 预发布快照,运行时版本为 4.99.0。它可以输入中文,但缺少后续稳定版中的部分配置,例如:
1 | [Behavior] |
没有这个选项时,每个窗口维护自己的输入状态:一个终端切到中文,另一个终端仍可能是英文。
若系统较新,应优先使用发行版官方仓库。本文后续使用的第三方 PPA 仅针对 Ubuntu 20.04 Focal,不应直接套用到其他 Ubuntu 版本。
3. 初始安装
先备份配置:
1 | cp -a ~/.config/fcitx5 ~/.config/fcitx5.backup-YYYYMMDD |
安装核心、中文插件和应用前端:
1 | sudo apt update |
选择 Fcitx5:
1 | im-config -n fcitx5 |
注销并重新登录后,预期环境为:
1 | GTK_IM_MODULE=fcitx5 |
注意:XMODIFIERS 使用 @im=fcitx,不是 @im=fcitx5。
4. 第一个故障:Fcitx5 没启动,IBus 仍在工作
最初同时存在两套互相矛盾的配置:
~/.xinputrc通过im-config选择 Fcitx5。~/.config/environment.d/input-method.conf又手工设置了旧值fcitx。
Ubuntu 20.04 的 Xsession 启动脚本检测到输入法变量已被手工设置后,会跳过 im-config 的自动初始化。结果是应用尝试连接 Fcitx,但 Fcitx5 守护进程没有启动;GNOME 则继续运行 IBus。
解决方法是只保留一个配置入口。本次删除手工 environment.d 覆盖,让 im-config 接管,然后重新登录。
检查方法:
1 | env | grep -E 'GTK_IM_MODULE|QT_IM_MODULE|XMODIFIERS' |
fcitx5-remote 常见返回值:
1:英文/未激活2:中文输入法已激活
5. GNOME 与 IBus 快捷键冲突
GNOME 原来保留了 IBus 的 libpinyin 输入源,并占用 Super+Space。应用实际由 Fcitx5 接管时,这个快捷键只切换 GNOME 输入源,看起来像“按了没反应”。
确认 Fcitx5 正常后,可让 GNOME 只保留普通键盘:
1 | gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]" |
Fcitx5 全局配置:
1 | [Hotkey/TriggerKeys] |
配置文件位置:
1 | ~/.config/fcitx5/config |
6. 升级到支持全局状态的版本
Fcitx5 5.0.5 已支持 ShareInputState=All。Ubuntu 20.04 可使用专为 Focal 构建的第三方 PPA:
先添加软件源,再做模拟安装:
1 | sudo add-apt-repository ppa:zhsj/fcitx5 |
模拟结果需要检查:
- 是否降级软件包。
- 是否删除无关应用。
- 是否出现未满足依赖。
- 所有 Fcitx5 核心、前端和中文插件是否来自同一套仓库。
确认后再执行正式安装。
7. 第二个故障:升级后启动即崩溃
第一次只升级核心和前端后,Fcitx5 启动出现 SIGSEGV。堆栈同时出现:
1 | libFcitx5Core.so.5 |
根因不是配置文件,而是 ABI 混用:新核心加载了仍链接旧 .so.5 的 xcb.so、拼音等插件。
检查旧 ABI 插件:
1 | for file in /usr/lib/x86_64-linux-gnu/fcitx5/*.so; do |
修复原则:Fcitx5 核心、X11/Wayland 前端、拼音、表格和已启用插件必须作为一组升级,不能只升级主程序。
本次补齐了:
fcitx5-module-xorgfcitx5-module-waylandfcitx5-pinyinfcitx5-tablefcitx5-module-punctuationfcitx5-module-pinyinhelperfcitx5-module-cloudpinyinfcitx5-module-fullwidthfcitx5-module-quickphrase
升级 chttrans 会替换 OpenCC,并导致现有 GoldenDict 被卸载。因此本次移除旧 chttrans,保留 GoldenDict。代价是暂时没有 Fcitx5 的一键简繁转换,拼音输入不受影响。
8. 安装 macOS 风格主题
使用 Candlelight 的 macOS-dark:
1 | git clone --depth 1 \ |
Classic UI 配置:
1 | Vertical Candidate List=False |
保存到:
1 | ~/.config/fcitx5/conf/classicui.conf |
9. 修改候选词方向键行为
默认拼音配置把 Up/Down 放在 PrevPage/NextPage,因此方向键会整页翻动。改为逐个候选词移动:
1 | [PrevPage] |
保存到:
1 | ~/.config/fcitx5/conf/pinyin.conf |
最终行为:
Up/Down:逐个选择候选词。-/=:上一页/下一页。Shift+Tab/Tab:保留逐个选择。
10. 最终验证
1 | fcitx5 --version |
本次最终状态:
1 | Fcitx5: 5.0.5 |
11. AI 协作中的经验
这次过程适合拆成两个阶段:
- DeepSeek 用于搜索候选方案、比较输入法框架和收集公开项目。
- Codex 读取真实进程、环境变量、APT 依赖和 DBus 配置,逐层定位故障并实施修复。
AI 给出的通用安装命令不能直接替代环境诊断。尤其是输入法环境变量、发行版版本、桌面会话和插件 ABI,必须以当前系统输出为准。