Linux输入系统经过多年的发展,依旧还是一团糟,和整个Linux社区一样,太过于分散和自由,没有一个主心骨。
说道输入系统,社区目前这个样子个人感觉主要是没有持续性,比如fcitx。当然,这也无可厚非,毕竟开源项目都是自愿的、没有回报的,尤其是输入系统这类基础平台,上层系统虽然都依赖它,但是它既没有得到资金上的回报,也没有得到应有的社区关注。尤其Linux平台几年一变化,输入系统类的基础库创始人根本没有精力持续跟进,例子还是fcitx。还好fcitx迎来了新的开发者,让fcitx步入新的4.x,焕发青春。
锤子科技捐助OpenSSL是一个很好的开端,希望更多的商业公司可以捐助一下类似的基础开源平台。
1. 什么是输入系统
引用Wikipedia给输入系统来个定义:
- 输入系统,也就是俗称的输入法(Input Method,简称IM)用于计算机操作系统,将外部输入设备信号转换为系统可识别的字符。主要外设是键盘,主要的应用环境是通过标准键盘上有限的按键,输入全球各种语言。
- 输入系统编辑器(Input Method Editor、Input Method Engine、Input Method Environment、Input Method Platform,简称IME)才是真正的操作系统上的程序,负责实现上述IM系统的功能。
- IM最初为了 CJK (Chinese, Japanese and Korean,三个国家名称缩写)的计算机提供字符转换输入,后来被标准化为全球语言提供输入转换支持。
- IME这个名次最早由Microsoft Windows使用,后被用于各大操作系统。
2. Linux平台IME现状
从整个输入系统的发展看,主要分为如下几大类如入
- XIM(X INPUT METHOD),最早的IME,基于I18N,因为本身存在缺陷(过度依赖X Window、每个输入语言需要独立的XIMServer),已经被淘汰。因为其架构对GTK+和QT都有比较的兼容性,少数IME依旧依赖XIM,比如Fcitx。已经淘汰
- IIIM(Internet/Intranet Input Method),解决了XIM的平台依赖性缺陷,并引入UNICODE支持。该项目SUN公司OpenI18N项目构建,与其他SUN项目一样,没有在社区内有广泛的使用,已经流产。已经淘汰
- SCIM(Smart Common Input Method Platform),相对XIM和IIIM较成熟的输入法解决方案,实现了模块化的结构、简单的编程接口等,曾经绑定到多个发行版中同步发型。但后期疏于维护,目前已经淡出市场。已经淘汰
- IBus(Intelligent Input Bus),当前主流发行版默认绑定的IM(主要是Gnome,2015年以及之前),一直在持续开发(截至2016/02)。与各大DesktopManager整合非常好,程序兼容性也没什么大问题。主流-程序兼容性和性能较差
- 虽然IBus Github Commit还算频繁(2016.02查看),但是Bug还是挺多的,前阵升级到Ubuntu 15.10就遇到了IBus与Firefox的冲突问题,无奈切换到Fcitx。
2016.02.25 经过系统和软件升级又好了。
- 颜值高,与Gnome和Unity集成度高。
- Fcitx(Free Chinese Input Toy for X),很有历史的中文输入产品,与SCIM同时代推出。经过相当长一段时间的开发后作者放弃了更新。但是该产品近期迎来了大的转机,Fcitx具有了新的代码维护者,将之前众多的BUG一一修复,并规划了清晰的开发路线Fcitx Todo-List。此举将Fcitx又拉回了公众视线,预计未来将会有更好的发展。主流-兼容性和扩展性强,未来Linux下主要输入法框架
- Ubuntu Kylin社区也曾经组织讨论考虑使用Fcitx代替IBus作为默认的IME。(参考URL:Using ibus or fcitx as default in UbuntuKylin)原因有如下:
- it is the first Chinese input method in open source community since 2002, and it has lots of fans in China, especially guys using Wubi method.
2. it provides more efficient and intelligent input experience than ibus.
3. it provides skin options and more convenient configuration tool.
4. it provides good support to cloud-pinyin.
5. Compatibility between Fcitx and Unity is improving gradually. E.g., the latest update of NUX makes it possible to input Chinese words in Dash.
6. Fans are working to make it better, such as GTK+ show, Indicator show.
- Fcitx Github Commit 更新的频率也不高了(2016.02查看),估计开始懈怠了,希望能坚持住。
- Fcitx界面稍微难堪一些,与Gnome和Unity兼容稍差;但是该输入法框架下的一些输入法具有很多主题界面,有很多养眼的,比如搜狗输入法。
3. Linux IME推荐(Updated at 2017.03.25)
- Ubuntu 15.xx 以后版本,以及同期其他发行版:Fcitx
- Ubuntu 10-14.xx 版本,以及同期其他发行版:IBus
- Ubuntu 9 和之前版本,以及同期其他发行版:SCIM
Fcitx我使用fcitx-table-wbpy模式,可以混合输入拼音和五笔,很不错。减少电脑用多了,提笔忘字的问题。
Fcitx在Gnome上最近出了一些小问题(见6.故障排查
章节),发现fcitx在Gnome上运行的稳定性比Unity上差好多。
4. fcitx配置
默认情况下,安装完成后配置Language Support使用fcitx输入法即可正常工作,无需配置Region&Language、也无需删除ibus输入法:
如遇到特殊情况,如Ubuntu 15.10升级到Ubuntu 16.04后,wps类的QT程序默认无法调用fcitx,就需要修改一下系统的配置:
- 方案1,删除ibus(靠谱)
ray@ray-ThinkPad-X250:~$ sudo apt remove ibus
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
liblua5.1-0 libpinyin7
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
ibus ibus-libpinyin ibus-table ibus-table-wubi ubuntu-desktop unity-control-center unity-control-center-signon
0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded.
After this operation, 20.9 MB disk space will be freed.
Do you want to continue? [Y/n]
-
方案2,增加配置文件(~/.profile),声明 QT输入法调用变量
此方法测试后不好使,应该是配置文件搞错了,但是测试了很多都不行~/.profile、.xinitrc、.xprofile等,保留如下的语句吧,未来再测试。
export XIM="fcitx"
export XIM_PROGRAM="fcitx"
export XMODIFIERS="@im=fcitx" #关键条目
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
5. 输入法切换工具
$ ./im-config #目前没感觉有什么用的程序
6. 故障排查
6.1 输入法不显示候选框
出现这个问题时,一般Gnome-Shell上的输入法ICON应该也一同消失了,这个问题表象上是fcitx-ui-qimpanel的问题,可以偿试重新安装这个包。
我这遇到这个问题时,提示了sougou-pinyin的故障,删除掉sogou拼音即可。(我使用fcitx-table-wbpy,不直接用pinyin)
参考URL
pinyinjoe 拼音舟 Ubuntu Chinese Setup 12.04 - 15.10
Wikipeadia Input_method
Arch Linux Wiki : SCIM
Arch Linux Wiki : IBUS
Arch Linux Wiki : Fcitx
Linux input method framework brief summary
Ubuntu 中文拼音输入法小结
Linux操作系统下的三种输入法架构探析