IBus 五笔输入法配置与排错经验

IBus 五笔输入法配置与排错经验

环境:Ubuntu 22.04.5 LTS,GNOME 42 + Wayland,IBus 1.5.26,ibus-table 1.16.7

结论速览

  1. IBus 五笔由 ibus-table-wubi 提供,包含两个引擎:table:wubi-jidian86(极点五笔 86)和 table:wubi-haifeng86(海峰五笔 86)。
  2. GNOME 输入源里的引擎名必须带 table: 前缀 。写成 wubi-jidian86 会导致 GNOME 找不到引擎,顶栏输入法列表里就不会出现五笔,ibus engine wubi-jidian86 也会报 Cannot find engine。
  3. 同一会话不要同时启用 fcitx 和 IBus,否则 fcitx 抢占 GTK_IM_MODULE / QT_IM_MODULE / XMODIFIERS,IBus 引擎在顶栏不显示或无法输入。
  4. 五笔的详细参数不在 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 = 4
  • auto_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
相关推荐
今天背单词了吗9802 小时前
AI 网关:大模型时代的统一接入与安全防线
网络·人工智能·安全·ai·1024程序员节
莫叫石榴姐2 小时前
半导体业务数仓建模: Lot、Wafer、Die、Recipe、OEE、YMS 建模要点
数据仓库·sql·面试·职场和发展·矩阵·1024程序员节
虚无的纽扣2 小时前
【Linux】线程互斥:多线程改同一个变量,到底会出什么问题
linux·服务器·1024程序员节
CodeGL2 小时前
13、Python基础之网络编程
网络·1024程序员节
~城南花已开~2 小时前
25G网卡 Bond2 (Balance-XOR) 极限测试:28Gbps 并发与故障无缝切换实战
1024程序员节
Purple Coder2 小时前
超导性能对比
1024程序员节
小此方2 小时前
Re:Mysql数据库基础篇(四):一文吃透MySQL数据类型:精度陷阱、长度限制与存储机制
1024程序员节
lazy H2 小时前
【计算机网络】第 5 篇:TCP 和 UDP 有什么区别?从 Java 后端场景理解两种传输协议
经验分享·后端·网络协议·tcp/ip·计算机网络·1024程序员节
*小海豚*2 小时前
C盘占用大,windows系统清理C盘各软件 MSI 安装/修复缓存
1024程序员节