Linux輸入系統(tǒng)經(jīng)過多年的發(fā)展,依舊還是一團(tuán)糟,和整個Linux社區(qū)一樣,太過于分散和自由,沒有一個主心骨。
說道輸入系統(tǒng),社區(qū)目前這個樣子個人感覺主要是沒有持續(xù)性,比如fcitx。當(dāng)然,這也無可厚非,畢竟開源項目都是自愿的、沒有回報的,尤其是輸入系統(tǒng)這類基礎(chǔ)平臺,上層系統(tǒng)雖然都依賴它,但是它既沒有得到資金上的回報,也沒有得到應(yīng)有的社區(qū)關(guān)注。尤其Linux平臺幾年一變化,輸入系統(tǒng)類的基礎(chǔ)庫創(chuàng)始人根本沒有精力持續(xù)跟進(jìn),例子還是fcitx。還好fcitx迎來了新的開發(fā)者,讓fcitx步入新的4.x,煥發(fā)青春。
錘子科技捐助OpenSSL是一個很好的開端,希望更多的商業(yè)公司可以捐助一下類似的基礎(chǔ)開源平臺。
1. 什么是輸入系統(tǒng)
引用Wikipedia給輸入系統(tǒng)來個定義:
- 輸入系統(tǒng),也就是俗稱的輸入法(Input Method,簡稱IM)用于計算機(jī)操作系統(tǒng),將外部輸入設(shè)備信號轉(zhuǎn)換為系統(tǒng)可識別的字符。主要外設(shè)是鍵盤,主要的應(yīng)用環(huán)境是通過標(biāo)準(zhǔn)鍵盤上有限的按鍵,輸入全球各種語言。
- 輸入系統(tǒng)編輯器(Input Method Editor、Input Method Engine、Input Method Environment、Input Method Platform,簡稱IME)才是真正的操作系統(tǒng)上的程序,負(fù)責(zé)實現(xiàn)上述IM系統(tǒng)的功能。
- IM最初為了 CJK (Chinese, Japanese and Korean,三個國家名稱縮寫)的計算機(jī)提供字符轉(zhuǎn)換輸入,后來被標(biāo)準(zhǔn)化為全球語言提供輸入轉(zhuǎn)換支持。
- IME這個名次最早由Microsoft Windows使用,后被用于各大操作系統(tǒng)。
2. Linux平臺IME現(xiàn)狀
從整個輸入系統(tǒng)的發(fā)展看,主要分為如下幾大類如入
- XIM(X INPUT METHOD),最早的IME,基于I18N,因為本身存在缺陷(過度依賴X Window、每個輸入語言需要獨立的XIMServer),已經(jīng)被淘汰。因為其架構(gòu)對GTK+和QT都有比較的兼容性,少數(shù)IME依舊依賴XIM,比如Fcitx。已經(jīng)淘汰
- IIIM(Internet/Intranet Input Method),解決了XIM的平臺依賴性缺陷,并引入UNICODE支持。該項目SUN公司OpenI18N項目構(gòu)建,與其他SUN項目一樣,沒有在社區(qū)內(nèi)有廣泛的使用,已經(jīng)流產(chǎn)。已經(jīng)淘汰
- SCIM(Smart Common Input Method Platform),相對XIM和IIIM較成熟的輸入法解決方案,實現(xiàn)了模塊化的結(jié)構(gòu)、簡單的編程接口等,曾經(jīng)綁定到多個發(fā)行版中同步發(fā)型。但后期疏于維護(hù),目前已經(jīng)淡出市場。已經(jīng)淘汰
- IBus(Intelligent Input Bus),當(dāng)前主流發(fā)行版默認(rèn)綁定的IM(主要是Gnome,2015年以及之前),一直在持續(xù)開發(fā)(截至2016/02)。與各大DesktopManager整合非常好,程序兼容性也沒什么大問題。主流-程序兼容性和性能較差
- 雖然IBus Github Commit還算頻繁(2016.02查看),但是Bug還是挺多的,前陣升級到Ubuntu 15.10就遇到了IBus與Firefox的沖突問題,無奈切換到Fcitx。
2016.02.25 經(jīng)過系統(tǒng)和軟件升級又好了。 - 顏值高,與Gnome和Unity集成度高。
- Fcitx(Free Chinese Input Toy for X),很有歷史的中文輸入產(chǎn)品,與SCIM同時代推出。經(jīng)過相當(dāng)長一段時間的開發(fā)后作者放棄了更新。但是該產(chǎn)品近期迎來了大的轉(zhuǎn)機(jī),F(xiàn)citx具有了新的代碼維護(hù)者,將之前眾多的BUG一一修復(fù),并規(guī)劃了清晰的開發(fā)路線Fcitx Todo-List。此舉將Fcitx又拉回了公眾視線,預(yù)計未來將會有更好的發(fā)展。主流-兼容性和擴(kuò)展性強(qiáng),未來Linux下主要輸入法框架
- Ubuntu Kylin社區(qū)也曾經(jīng)組織討論考慮使用Fcitx代替IBus作為默認(rèn)的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兼容稍差;但是該輸入法框架下的一些輸入法具有很多主題界面,有很多養(yǎng)眼的,比如搜狗輸入法。
3. Linux IME推薦(Updated at 2017.03.25)
- Ubuntu 15.xx 以后版本,以及同期其他發(fā)行版:Fcitx
- Ubuntu 10-14.xx 版本,以及同期其他發(fā)行版:IBus
- Ubuntu 9 和之前版本,以及同期其他發(fā)行版:SCIM
Fcitx我使用fcitx-table-wbpy模式,可以混合輸入拼音和五筆,很不錯。減少電腦用多了,提筆忘字的問題。
Fcitx在Gnome上最近出了一些小問題(見6.故障排查章節(jié)),發(fā)現(xiàn)fcitx在Gnome上運行的穩(wěn)定性比Unity上差好多。
4. fcitx配置
默認(rèn)情況下,安裝完成后配置Language Support使用fcitx輸入法即可正常工作,無需配置Region&Language、也無需刪除ibus輸入法:


如遇到特殊情況,如Ubuntu 15.10升級到Ubuntu 16.04后,wps類的QT程序默認(rèn)無法調(diào)用fcitx,就需要修改一下系統(tǒng)的配置:
- 方案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輸入法調(diào)用變量
此方法測試后不好使,應(yīng)該是配置文件搞錯了,但是測試了很多都不行~/.profile、.xinitrc、.xprofile等,保留如下的語句吧,未來再測試。
export XIM="fcitx"
export XIM_PROGRAM="fcitx"
export XMODIFIERS="@im=fcitx" #關(guān)鍵條目
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
5. 輸入法切換工具
$ ./im-config #目前沒感覺有什么用的程序

6. 故障排查
6.1 輸入法不顯示候選框
出現(xiàn)這個問題時,一般Gnome-Shell上的輸入法ICON應(yīng)該也一同消失了,這個問題表象上是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 中文拼音輸入法小結(jié)
Linux操作系統(tǒng)下的三種輸入法架構(gòu)探析