Intelligent Input Bus,简称IBus,是 Unix-like 操作系统下的多语输入法平台。因为它采用了总线(Bus)式的架构,所以命名为Bus。

在东北亚开源软件(OSS)论坛第3工作小组提出的《输入法引擎服务提供者界面规格》(Specification of IM engine Service Provider Interface)草案里,能实现以 Bus 为核心的架构被建议采用。SCIM-1.4 的架构并不被看好,因为它是用 C++ 开发的,因此常常会有C++应用二进制接口不符合的情况发生。

从那时起,一些人开始着手开发下一代的输入法平台,像是苏哲领导的IM-Bus,以及胡正的SCIM-2,可惜的是它们的开发进度仍然停滞不前。因此,时任红帽(现任谷歌)的黄鹏开始用 Python 开发 IBus 以实现 IM-Bus 提出的构想。IBus 并不完全实现东北亚 OSS 论坛所建议的函数,而是采用D-Bus及Glib来实做。尽管如此,IBus 已经开始被 OSS 社群所接受,FreeBSD 以及各大 Linux 发行版 如 Fedora、Ubuntu 已经将 IBus 纳入其包库里。在 Fedora 11 里,IBus 已经成为默认的多语输入平台。

IBus 是用 C 及 Python 开发的,如此可以避免 C++ ABI transition 问题。IBus 主要透过下列三种服务(Service)来提供功能:

  • 输入法引擎服务:为输入法本身。
  • 配置服务:管理IBus以及输入法的设置选项。
  • 控制面板服务:提供诸如语言条,候选字菜单等用户界面。

IBus 使用 D-Bus 作 ibus-daemon服务,以及 IM客户端(像是konsole, gedit, firefox)之间的沟通。 ibus-daemon 透过接受服务登录,以及发送 D-Bus 消息来管理服务及IM客户端。IBus支持 XIM 协议及 Gtk IM 模块以及 Qt IM 模块。

项目托管在 GitHub IBus 组织下 https://github.com/ibus/ibus。

构建

首先,获取最新的源代码,并进入其目录:

git clone https://github.com/ibus/ibus.git
cd ibus

目前这里使用的是 master 分支上的代码,有时该分支可能并不稳定。可以使用一个 release 分支或标签的代码来构建,以避免一些奇怪的错误。这里我使用 1.5.y 分支的代码:

git checkout -b 1.5.y origin/1.5.y

使用脚本调用 auto configure 工具链,来生成 Makefile 文件

./autogen.sh --prefix=/usr --sysconfdir=/etc

这时,如果有错误,说明有些依赖并没有被安装在系统里,需要用户手动安装,请看依赖章节。

如果一切正常,我们就可以用 make 进行构建和安装了:

make && sudo make install

如果构建失败,请对照构建时依赖相关问题。

完成之后运行一下:

ibus-setup

在 IBus 的代码里,有一个 simple engine 输入引擎服务,它不提供任何真实的输入功能,只是把桌面环境支持的各种键盘布局显示出来,我们可以用它检测 IBus 是否成功构建:

若没有这些键盘布局,可能 ibus-daemon 出了些问题,尝试运行:

ibus-daemon

在运行时依赖相关问题中有一些我遇到的问题,可供参考。

之后就可以构建想用的输入服务了。据官方文档,目前的引擎有:

  • ibus-anthy: 日文输入法。
  • ibus-array: 行列输入法
  • ibus-bopomofo: 使用注音符号的拼音输入法,基于ibus-pinyin引擎开发,但输入方式与一般标准智能形注音输入法(如新酷音输入法或微软新注音)不同。
  • ibus-chewing: 新酷音输入法,智能形注音输入法。
  • ibus-hangul: 韩文输入法。
  • ibus-kkc:日文假名汉字转换输入法。
  • ibus-m17n: 使用m17n-db的多语输入法。
  • ibus-pinyin: 拼音输入法,为IBus主要开发者所开发。
  • ibus-libpinyin: 是 Red Hat 工程师主导、基于 n-gram 语言模型的集成性泛拼音输入法引擎。
  • ibus-libzhuyin: 与 ibus-libpinyin 系出同源,支持注音符号输入,名为“新注音”(New Zhuyin) 输入法,是智能形的注音输入法。
  • ibus-table: 码表输入引擎。
  • ibus-googlepinyin: Google拼音输入法的ibus版本(这个并不是官方的Google输入法,而是由爱好者从Android项目上迁移过来)

依赖

最基础的依赖是 D-Bus 及其 Python 绑定,在 Ubuntu 里,这些以来应该是已经被预置在桌面版本的系统中了:

python >= 2.5
dbus-glib >= 0.74
dbus-python >= 0.83.0

官方文档还推荐安装qt >= 4.4.0,这是为了让 IBus 能和 Qt 的 IM 协作,这个依赖对于使用 Qt 的应用程序(如使用的桌面环境是KDE)来说是至关重要的。但在 Ubuntu 18.04 中, Gnome 被作为默认的桌面环境,因此,可以根据自己的需要来配置。

构建时依赖相关问题

根据我的经历,以下这些是我在 Ubuntu 18.04 上配置期间遇到的问题:

  • 配置期间,提示未找到 gnome-autogen.sh:安装 gnome-common
  • 配置期间,提示未找到 gtk-doc:安装 gtk-doc
  • 配置期间,提示未找到 gtk±2.0:安装 libgtk2.0-dev
  • 配置期间,提示未找到 gtk±3.0:安装 libgtk-3-dev
  • 配置期间,提示未找到 dconf:安装 libdconf-dev
  • 配置期间,提示未找到 emoji-test.txt:安装 unicode-data
  • 配置期间,提示未找到 annotations/en.xml:安装 unicode-cldr-core
  • 配置期间,提示未找到 unicode/ucd/NamesList.txt:创建一个符号链接 unicode/NamesList.txt -> unicode/ucd/NamesList.txt (unicode-data 包已安装)
  • 配置期间,提示未找到 unicode/ucd/Blocks.txt:创建一个符号链接 unicode/Blocks.txt -> unicode/ucd/Blocks.txt (unicode-data 包已安装)
  • 编译期间,提示未找到 valac:安装 valac-0.40-vapi, valac-0.40-dev
  • 编译期间,提示 Vala bindings require Gobject Introspection:安装 libgirepository1.0-dev

运行时依赖相关问题

ibus_serializable_serialize_object 符号未找到

我在运行 ibus-daemon 时遇到了 Not found symbol ibus_serializable_serialize_object 的报错。
根据分析,是 libibus-1.0.so 被安错了地方:
ibus-daemon 链接到 /usr/lib/x86_64-linux-gnu/libibus-1.0.so.5,这个文件是个符号链接,指向真正的 so 文件。而在我的电脑它指向了上之前的包管理器安装的 so 版本,于是就出现 ABI 不兼容的问题,提示找不到 symbol。
根据 log,安装脚本里的确安装了新版本的 so 并且处理了指向,只是它被安在了 /usr/lib。于是我把 /usr/lib/x86_64-linux-gnu/libibus-1.0.so.5 指向改为了新安装的 so 文件,再次运行,一切正常。

在 Ubuntu 18.04 构建 Intelligent Input Bus (IBus)相关推荐

  1. 解决ubuntu 18.04安装搜狗输入法 在fcitx的add input method不显示

    解决ubuntu 18.04安装搜狗输入法 在fcitx的add input method不显示 背景 由于之前安装过搜狗输入法,但是总是在候选框出现乱码. 于是,就把搜狗输入法删除了,但是后面再安装 ...

  2. 如何在Ubuntu 18.04上使用Node.js和MongoDB构建和部署GraphQL服务器

    The author selected the Wikimedia Foundation to receive a donation as part of the Write for DOnation ...

  3. 在Ubuntu 18.04上安装和使用Tesseract 4

    量子指南 (QUANTRIUM GUIDES) Today, the extraction of information from scanned documents such as letters, ...

  4. ubuntu 18.04 安装 中文 拼音 输入法

    ubuntu 18.04 安装 中文输入法 拼音 在安装ubuntu时,如果选择英文安装默认会不启用中文输入法的.可以通过下述方法开启: 1,安装 pingyin 输入法 打开终端输入命令: sudo ...

  5. eclipse theia_如何在Ubuntu 18.04上设置Eclipse Theia Cloud IDE平台

    eclipse theia 介绍 (Introduction) With developer tools moving to the cloud, adoption of cloud IDE (Int ...

  6. ORBSLAM2 安装与运行(Ubuntu 18.04下测试)

    ORBSLAM2 安装与运行(Ubuntu 18.04下测试) 依赖项 Pangolin github地址:https://github.com/stevenlovegrove/Pangolin.gi ...

  7. Ubuntu 18.04/16.04/14.04 + RTX 2070 + CUDA + cuDNN环境配置

    1.英伟达显卡驱动 1.1.第一种安装方法: 对于新出Nvidia显卡,本人并不建议大家到官网手动下载安装NVIDIA的显卡驱动,有可能因为缺少显卡安装包的依赖条件导致最后没有办法安装成功.特别是我刚 ...

  8. linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法

    本文介绍在Ubuntu 18.04操作系统中安装Mono及基本使用Mono的方法.Mono是一个基于ECMA/ISO标准开发和运行跨平台应用程序的平台,它是Microsoft .NET框架的免费开源实 ...

  9. ubuntu 18.04.4 安装 bazel

    文章目录 ubuntu 18.04.4 安装 bazel 使用二进制安装程序 1: 安装所需的软件包 2: 运行安装程序 3: 设置环境 ubuntu 18.04.4 安装 bazel 使用二进制安装 ...

最新文章

  1. java编辑简单文本编辑器_简单的Java纯文本编辑器
  2. hdu1.3.2 Rank
  3. 为什么选择Nginx
  4. java main方法调用非静态方法_java中main函数怎么调用外部非static方法
  5. 统计学习方法-第二章课后习题答案整理
  6. 服务器硬件监控转载:
  7. java正则表达式判断手机号_正则表达式学习之简单手机号和邮箱练习
  8. php定位符,浅析PHP正则表达式定位字符
  9. nuxt页面跳转_还不会Nuxt.js的速进!
  10. ActiveMQ从入门到精通(二)
  11. 使用反射获取类的静态属性值
  12. QA: Android 开发kotlin换行格式难看问题
  13. python各种库下载地址:
  14. 摩托车竞速游戏:Road Redemption公路救赎mac中文版
  15. linux学习日志,linux学习日记范文
  16. FTP软件的安装及上传/下载方法
  17. SSH-keygen用法
  18. linux c语言俄罗斯方块,C语言俄罗斯方块游戏解析(图文+源码)
  19. 日语输入法使用技巧!
  20. 黑群晖折腾记(二)-为不支持通信的UPS 增加断电自动关 NAS

热门文章

  1. leetcode 5485. 找出最长的超赞子字符串
  2. zabbix配置redis监控
  3. EL表达式中的param和paramValues对象
  4. Python网络爬虫5 - 爬取QQ空间相册
  5. 数据增强库imgaug使用笔记
  6. HTML5 - 智能表单
  7. ros launch文件编写和节点启动顺序控制
  8. [python] Pelican+Mermaid无插件实现
  9. SpringBoot项目多模块拆分教程
  10. android 键盘风格,小键盘大细节:浅析Keyboard在移动产品中的设计