ibus
定义
ibus 全称 Intelligent Input Bus,是一个面向类 Unix 系统的多语言输入法框架,可运行于 GNU/Linux 与 FreeBSD 等操作系统[1]。它的定位是「框架」而不是某一个输入法:具体使用拼音、五笔、假名还是韩文,取决于安装在框架之上的引擎[4]。
之所以用「Bus」命名,是因为其架构以一条消息总线为核心,各组成部分围绕总线注册与通信;这一设计思路来自东北亚开源软件论坛第 3 工作小组关于输入法引擎服务提供者接口的草案建议[2]。框架本身以 C 与 Python 编写,并采用 GNU LGPL 2 及以后版本发布[1]。
原理
ibus 把输入过程拆成三类服务:输入法引擎负责实际的编码转换,配置服务保存框架与各引擎的选项,控制面板服务则绘制语言条、候选词菜单等界面[1]。三者都是独立进程,通过 D-Bus 与常驻的 ibus-daemon 交换消息,由守护进程接收服务注册并向对应的引擎或客户端转发事件[2]。
对上层应用而言,ibus 提供多种接入方式:实现 XIM 协议,并提供 GTK 与 Qt 的输入法模块,因此编辑器、终端和浏览器可按各自工具包接入[2]。因为引擎与客户端分处不同进程,任何一个引擎出错只会终止自身,不会牵连整个框架;引擎也可以按需加载和卸载,配置改动即时生效[3]。
graph LR
A[GTK/Qt 应用] -->|XIM / IM 模块| B[ibus-daemon]
B --> C[输入法引擎]
B --> D[配置服务]
B --> E[面板服务]
发展历程
ibus 的出现与 SCIM 的设计缺陷有关。东北亚开源软件论坛的草案认为 SCIM 1.4 以 C++ 开发,容易遭遇应用二进制接口变动的问题,因而建议采用以总线为核心的新架构[1]。此前苏哲主持的 IM-Bus 与胡正主持的 SCIM-2 先后启动,但开发均陷入停滞;时任红帽工程师的黄鹏随后以 Python、D-Bus 与 GLib 实现 ibus,用来验证 IM-Bus 的构想[2]。
项目于 2008 年 8 月发布首个版本[1]。此后 FreeBSD 与多个 Linux 发行版陆续把 ibus 收入软件仓库,Fedora 10 开始提供该框架,Fedora 11 将其设为默认输入法平台,Ubuntu 9.10 也以它替换了 SCIM[1][3]。
1.5 版本是另一次较大调整,框架与 GNOME 桌面的集成方式被重构,语言面板、半角/全角键启动等旧功能被移除,键盘布局与转换引擎统一归入「输入源」概念[5]。随后版本持续迭代,2020 年发布 1.5.22,2023 年发布 1.5.29,2026 年 4 月发布 1.5.34[1]。
应用
ibus 最常见的用途是在 Linux 桌面上输入中日韩文字。围绕框架存在大量引擎,例如处理汉语拼音的 ibus-libpinyin、处理注音的 ibus-chewing 与 ibus-libzhuyin、处理日文的 ibus-anthy 与 ibus-kkc、处理韩文的 ibus-hangul[2]。码表类输入法由 ibus-table 负责,五笔、仓颉等按字根表取字的方案都可以在它之上实现[2]。
对不属于中日韩范围的语言,ibus-m17n 借助 m17n 数据库提供泰文、印地文、阿拉伯文等大量语言的输入方案,并可在面板上显示输入状态[6]。由于 Debian、Red Hat 系发行版将其列为默认的非英文输入平台,用户通常无需额外选型即可使用[7]。
发行版生态中 ibus 与其他框架并存。银河麒麟、统信 UOS 等系统默认采用 Fcitx 框架,部分其他发行版则默认使用 ibus,用户也可通过输入法配置工具在两者之间切换[8]。
局限
ibus 的跨应用表现依赖各工具包的输入法模块,因此能否正常工作常取决于环境变量与桌面环境配置。在 Wayland 会话下,部分环境仍导出 GTK 与 Qt 的输入法模块变量,使应用继续走旧的模块协议而非 Wayland 原生文本输入协议,导致候选窗口在个别合成器上一闪而过、或无法定位到光标附近[9]。
应用侧的兼容性同样不齐。Chromium 与基于 Electron 的程序需要专门参数才能启用 Wayland 输入法支持,GTK2、GTK3 程序仍须依赖输入法模块变量,强制以 X11 后端运行的程序也无法改用原生协议。此外,合成器协议的实现差异还会影响细节行为,例如 Firefox 在原生 Wayland 模式下曾出现候选窗口不跟随光标的情况[10]。
框架本身也不实现具体输入法,若系统只安装了 ibus 而未安装任何引擎,则无法输入非拉丁文字;仅在安装了真实引擎时,输入内容才能被送入应用[11]。1.5 版本移除部分旧功能后,习惯旧界面的用户需要改用新的输入源管理方式,相关能力在部分桌面环境中由其他组件补足[5]。
参见
参考资料
- Intelligent Input Bus [引用日期2026-10-29]
- iBus [引用日期2026-10-29]
- Features/IBus [引用日期2026-10-29]
- 软件包:ibus(1.5.35~rc1-1 以及其他的) [引用日期2026-10-29]
- ubuntu.com 上的网页 [引用日期2026-10-29]
- IBus [引用日期2026-10-29]
- ibus [引用日期2026-10-29]
- 社区首页 >专栏 >浅析Linux系统的输入法平台 [引用日期2026-10-29]
- Bug 1246420 [引用日期2026-10-29]
- show_bug [引用日期2026-10-29]
- github.com 上的网页 [引用日期2026-10-29]