IBus 五笔输入法配置与排错经验
环境:Ubuntu 22.04.5 LTS,GNOME 42 + Wayland,IBus 1.5.26,ibus-table 1.16.7
结论速览
- IBus 五笔由
ibus-table-wubi提供,包含两个引擎:table:wubi-jidian86(极点五笔 86)和table:wubi-haifeng86(海峰五笔 86)。 - GNOME 输入源里的引擎名必须带
table:前缀 。写成wubi-jidian86会导致 GNOME 找不到引擎,顶栏输入法列表里就不会出现五笔,ibus engine wubi-jidian86也会报Cannot find engine。 - 同一会话不要同时启用 fcitx 和 IBus,否则 fcitx 抢占
GTK_IM_MODULE/QT_IM_MODULE/XMODIFIERS,IBus 引擎在顶栏不显示或无法输入。 - 五笔的详细参数不在
ibus-setup(IBus 首选项)主界面,而在独立的ibus-setup-table对话框,配置存于 dconf 的/org/freedesktop/ibus/engine/table/<引擎名>/。
安装与启用
bash
# 安装(本机已装:ibus-table-wubi 1.8.2-3)
sudo apt install ibus-table ibus-table-wubi
# 确认引擎已注册
ibus list-engine | grep -i wubi
# table:wubi-haifeng86 - 海峰五笔86
# table:wubi-jidian86 - 极点五笔 86(极爽词库 6.0)
写入 GNOME 输入源(注意 table: 前缀):
bash
gsettings set org.gnome.desktop.input-sources sources \
"[('xkb', 'cn'), ('ibus', 'libpinyin'), ('ibus', 'table:wubi-jidian86')]"
gsettings get org.gnome.desktop.input-sources sources
切换输入法:Super+Space,或点击顶栏输入法指示器(显示「拼 / zh」)。
关键坑一:引擎名缺少 table: 前缀
错误写法:
bash
gsettings set org.gnome.desktop.input-sources sources \
"[('xkb', 'cn'), ('ibus', 'libpinyin'), ('ibus', 'wubi-jidian86')]"
现象:gsettings 看起来正常,ibus list-engine 也能看到引擎,但 GNOME 顶栏没有五笔,ibus engine wubi-jidian86 失败。
原因:IBus 中 table 引擎的真实名称是 table:wubi-jidian86,GNOME 按存储的名字解析引擎,短名解析不到,于是静默忽略该输入源。
验证与修复:
bash
ibus engine table:wubi-jidian86 # 成功则说明引擎名正确
ibus engine # 应输出 table:wubi-jidian86
gsettings set org.gnome.desktop.input-sources sources \
"[('xkb', 'cn'), ('ibus', 'libpinyin'), ('ibus', 'table:wubi-jidian86')]"
修复后顶栏即可看到「极点五笔 86(极爽词库 6.0)」。
补充:该码表的 symbol 为空,顶栏激活时可能显示空白或 us,但下拉列表中的名称正常。
关键坑二:fcitx 与 IBus 并存
排查命令:
bash
pgrep -a fcitx
grep run_im ~/.xinputrc # 之前为 run_im fcitx
systemctl --user show-environment | grep -E 'IM_MODULE|XMODIFIERS'
# 之前:GTK_IM_MODULE=fcitx / QT_IM_MODULE=fcitx / XMODIFIERS=@im=fcitx
即使 gnome-shell 里 ibus-daemon 正在运行,只要会话环境变量指向 fcitx,部分程序就仍走 fcitx,表现为候选框错乱、顶栏不显示 IBus 输入源。
切换到 IBus 的步骤:
bash
# 1. 让 im-config 选择 ibus(写入 ~/.xinputrc)
im-config -n ibus
# 2. 结束当前 fcitx 进程
pkill -TERM -x fcitx
# 3. 当前会话的 systemd/DBus 环境指向 IBus
systemctl --user set-environment \
GTK_IM_MODULE=ibus QT_IM_MODULE=ibus CLUTTER_IM_MODULE=ibus XMODIFIERS=@im=ibus
dbus-update-activation-environment --systemd \
GTK_IM_MODULE=ibus QT_IM_MODULE=ibus CLUTTER_IM_MODULE=ibus XMODIFIERS=@im=ibus
第 3 步只影响新启动的进程,必须注销并重新登录,gnome-shell 才会重新读取环境变量(Wayland 下无法单独重启 shell)。
重登录后验证:
bash
echo $XMODIFIERS # 应为 @im=ibus
pgrep -a fcitx # 应无输出
tr '\0' '\n' < /proc/$(pgrep -x gnome-shell)/environ | grep IM_MODULE
回退到 fcitx:
bash
im-config -n fcitx && fcitx -d
五笔参数设置
入口:IBus 首选项里选中「极点五笔 86」→「首选项」,或直接运行:
bash
/usr/libexec/ibus-setup-table --engine-name table:wubi-jidian86
配置路径:/org/freedesktop/ibus/engine/table/wubi-jidian86/
查看当前全部参数:
bash
gsettings list-recursively \
org.freedesktop.ibus.engine.table:/org/freedesktop/ibus/engine/table/wubi-jidian86/
本机默认值(未做任何自定义):
| 项目 | 键 | 默认值 | 含义 |
|---|---|---|---|
| 候选框方向 | lookuptableorientation |
1 | 竖排(0 横排,2 跟随系统) |
| 每页候选数 | lookuptablepagesize |
6 | |
| 始终显示候选框 | alwaysshowlookup |
true | |
| 唯一候选自动上屏 | autoselect |
false | 四码无重码仍需按空格 |
| 动态调整字频 | dynamicadjust |
true | |
| 自动通配符 | autowildcard |
true | |
| 单/多通配字符 | singlewildcardchar / multiwildcardchar |
空 | 空则 z 不作为通配键 |
| 错误提示音 | errorsound |
true | 需 python3-simpleaudio,本机未安装,实际不响 |
| 记住中英状态 | rememberinputmode |
true | |
| 初始输入模式 | inputmode |
1 | 1=中文,0=英文直通 |
| 简繁模式 | chinesemode |
无用户值 | 用码表默认,按语言环境决定 |
| 单字模式 | onechar |
false | |
| 自动提交 | autocommit |
false |
常用调整:
bash
P=org.freedesktop.ibus.engine.table:/org/freedesktop/ibus/engine/table/wubi-jidian86/
# 启用 z 通配
gsettings set $P singlewildcardchar 'z'
# 四码唯一候选自动上屏
gsettings set $P autoselect true
# 关闭错误提示音(或安装 python3-simpleaudio)
gsettings set $P errorsound false
码表本身属性(来自 /usr/share/ibus-table/tables/wubi-jidian86.db 的 ime 表):
max_key_length = 4auto_select = false、auto_commit = false、dynamic_adjust = TRUE- 单字 70,851 条,词组 136,829 条
常见故障对照
| 现象 | 原因 | 处理 |
|---|---|---|
| 顶栏列表没有五笔 | 输入源引擎名缺 table: |
改为 ('ibus','table:wubi-jidian86') |
| 顶栏没有五笔,但 fcitx 在跑 | im-config 选了 fcitx | im-config -n ibus 后重新登录 |
| 切换后无候选框 | 会话环境仍是 fcitx | 注销重登录 |
| 按 z 无通配 | 通配字符为空 | singlewildcardchar 'z' |
| 没有错误提示音 | 缺 python3-simpleaudio | sudo apt install python3-simpleaudio 或关闭提示音 |
| 顶栏显示空白或 us | 码表 symbol 为空 | 一般可忽略;列表项名称正常 |
ibus engine xxx 报 Cannot find engine |
用了短名 | 使用 table:xxx |
相关路径速查
- 引擎注册信息:
/usr/share/ibus/component/table.xml(engines由ibus-engine-table --xml动态生成) - 码表数据库:
/usr/share/ibus-table/tables/*.db - 引擎设置对话框:
/usr/libexec/ibus-setup-table --engine-name table:<名字> - 用户输入法选择:
~/.xinputrc(由im-config -n <ibus|fcitx>生成) - IBus 日志(本机无异常):
journalctl --user -b | grep -i ibus