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、每個輸入語言需要獨(dú)立的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上運(yùn)行的穩(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)探析