GhostBSD安装Fcitx中文输入法备忘录
此前在基于FreeBSD12.2的GhostsBSD 21操作系統上安裝Fcitx5半途而廢,以為不支持,就轉而成功安裝了fcitx4。后因升級GhostBSD無法啟動圖形環境而重裝了基于FreeBSD 13的GhostBSD 21后,下決心要測試下fcitx5能否支持GhostBSD。當查詢到fcitx5已支持freebsd13信息后,猜測沒多大問題,故又在折騰中琢磨了一番,記錄下過程,權作備忘。
1.安裝Fcitx5。安裝輸入法需安裝輸入法框架和輸入法引擎。根據系統具備自動解決依賴關系的特點,我直接安裝的輸入法引擎。sudo pkg install zh-fcitx5-chinese-addons fcitx5-configtool。安裝前可pkg search 查詢有無相應安裝包以及名稱、版本。也可以通過ports安裝,或源碼編譯安裝。
因本人使用五筆,直接的安裝的是zh-fcitx5-chinese-addons這個fcitx5輸入法引擎,其中包含五筆、拼音及五筆拼音等多種輸入法,當時系統根據依賴關系自動安裝了40個包。安裝完后可檢查一下針對gtk、qt的模塊是否自動正確安裝好,可根據所用的桌面環境了解哪些包必須安裝;安裝后終端給出了配置提示,但未說明修改哪一個配置文件。安裝后,自然而然地在菜單中找到相關項目設置fcitx,但顯示fcitx-config-qt未安裝的錯誤提示。雖然無圖形化配置工具也可手工修改配置文件,但麻煩些。考慮到我所用的桌面環境MATE基于Gnome,而Gnome基于gtk,可安裝:sudo pkg install fcitx5-configtool,當時系統根據依賴關系又安裝了一批軟件包。也就是說,fcitx5有針對gtk、qt的多個圖形化配置工具,但我還沒安裝過fcitx-config-qt。我的桌面是基于X11協議的Xorg圖形顯示服務器的MATE圖形界面環境,安裝后系統自動添加了開機啟動fcitx(注:凡 兼容XDG的桌面環境,比如 KDE、GNOME、 XFCE、 LXDE、MATE, 系統會自動添加啟動項,也就是安裝 Fcitx并重新登錄后Fcitx 會自動啟動)。若重啟后未自動加載,應在使用的啟動腳本里面添加 fcitx 以實現自動啟動(附件中最后一句代碼)。
2.配置環境變量。先說結論,只考慮默認用戶使用,僅修改.xprofile即可,添加以下內容后重啟操作系統即可。
#也可寫為XIM=fcitx5;export XIM;fcitx5換為fcitx也行,下同 export XIM=fcitx5 export GTK_IM_MODULE=fcitx5 export QT_IM_MODULE=fcitx5 export XIM_PROGRAM=fcitx5 export XMODIFIERS="@im=fcitx5"我在想,為什么fcitx不通過安裝程序針對不同系統自動修改配置文件呢?應該不難啊,至少針對用戶較多的操作系統作個適配,無非是先判斷操作系統,再向配置文件定向輸入幾行代碼。還要用戶自已配置。可能操作系統太多樣,受linux、unix一貫的風格所影響吧,讓用戶自己搞定,不過多干涉用戶吧。
此后內容可略過。對我而言,記錄一下探索的過程,可加深記憶,觸類旁通。不知其原理,記不住也學不通。根據安裝fcitx5后終端關于setenv的提示(見附件),考慮到shell為csh,推測可能應先修改.cshrc等(若設置全局使用,則應修改/etc/csh.cshrc和/etc/profile)(注:查資料得知,先判斷shell是csh、sh或bash,再決定是用setenv還是export設置變量。可以通過echo $SHELL或者 cat /etc/passwd 查看shell類型,或通過終端的標識,比如%,#。如果是csh、zsh,用setenv;如果是bsh用export。但我也很困惑,這應該是針對命令行方式的,要不我的shell是csh,但在圖形界面配置文件.xprofile中用的是export,而且.profile也是用的export。沒搞明白,再研究)。修改.cshrc,添加:
#指定X圖形程序的輸入法 setenv XMODIFIERS @im=fcitx #指定GTK immodule,xim輸入法表示所有X圖形程序可調用 setenv GTK_IM_MODULE fcitx/xim #指定QT immodule setenv QT_IM_MODULE fcitx #解決終端無法輸入中文、無法顯示中文及亂碼的問題。或無需設置,因為系統的其他配置或已設定,若國別、語言等選擇的美國、英文的或許需設置。 setenv LANG zh_CN.UTF-8 setenv MM_CHARSET zh_CN.UTF-8 setenv LC_CTYPE zh_CN.UTF-8 setenv LC_ALL zh_CN.UTF-8注:要在Shell中正常顯示系統的中文提示信息和支持中文輸入,LANG和shell的編碼配置需一致,并安裝有中文locale。如:LANG和 shell的編碼都配置成zh_CN.UTF-8,并安裝有zh_CN.UTF-8這個locale。如果shell和LANG配置不同,則中文顯示亂碼;如果LANG里設置的locale沒有安裝,則不能顯示系統的中文提示信息,只會顯示英文提示信息。
然而,配置并重啟操作系統后,仍無法輸入中文。解決問題期間,發現fcitx5-gtk未安裝,而mate基于gtk必須安裝,但增補安裝了也無濟于事。繼續搜索解決辦法,網上了解到“如果您用中文桌面環境,能啟動fcitx ,但不能輸入,大多是控制臺的locale和桌面的locale不一致所引起的”。在.profile添加以下兩行代碼后重啟即可輸入中文。
XMODIFIERS="@im=fcitx"; export XMODIFIERS LC_CTYPE="zh_CN.UTF-8"; export LC_CTYPE此處備注Local的常識。Locale是根據計算機用戶所使用的語言、所在國家或者地區以及當地的文化傳統所定義的一個軟件運行時的語言環境。分12個大類,即語言符號及其分類(LC_CTYPE)、數字(LC_NUMERIC)、比較和排序習慣(LC_COLLATE)、時間顯示格式(LC_TIME)、貨幣單位(LC_MONETARY)、信息主要是提示信息錯誤信息狀態信息標題標簽按鈕和菜單等(LC_MESSAGES)、姓名書寫方式(LC_NAME)、地址書寫方式(LC_ADDRESS)、電話號碼書寫方式(LC_TELEPHONE)、度量衡表達方式 (LC_MEASUREMENT)、默認紙張尺寸大小(LC_PAPER)、對locale自身包含信息的概述(LC_IDENTIFICATION)。設定locale就是設定12大類的locale分類屬性,即12個LC_*。除了這12個變量可以設定以外,為了簡便起見,還有兩個變量可設定:LC_ALL和LANG。它們之間有一個優先級的關系:LC_ALL > LC_* >LANG。LC_ALL是最上級設定或者強制設定,設定后將覆蓋所有其他的locale設定,而LANG是默認設定值。 我理解,就是設國家、字符集和語言,比如在中國,可選用多個中文字符集,你可以講中文普通話、方言,也可以講外語,但須事先明確一個規則,否則溝通起來不知所云,也就是事先告訴操作系統是什么規則。一般在安裝操作系統時就選擇了國別和語言。但要用中文,安裝操作系統時也不是非得選中國、漢語。明確了這一點,.profile配置文件中LC_CTYPE就好理解了,當然定義LC_ALL也是可行的。比如我在安裝操作系統時選擇的是中國、漢語,則.profile中就自定義有:
# Set default locale CHARSET=UTF-8; export CHARSET LANG=zh_CN.UTF-8; export LANG此后再驗證是否搞定,但因需要流式軟件,安裝了Libreoffice后無法輸入中文(有誰知道freebsd可以安裝wps office嗎?),又在網上搜索求教,參照Archlinux wiki,設置當前用戶的桌面環境變量,修改~/.xprofile,添加的是前面提到的五行變量設置,成功搞定Libreoffice中文輸入問題,而且經驗證,其他圖形界面軟件均可輸入,終端也可輸入、顯示中文。
注:~/.xprofile 是用戶級配置文件,用戶每次以X Windows登陸方式登陸,則執行該配置文件,也就是剛打開X會話時,在窗口管理器運行之前運行命令,用于隨會話自動運行程序,或從顯示服務器啟動,尤其是那個會話沒有自帶自動啟動程序功能時,比如一個獨立的窗口管理器。~/.profile 是用戶級配置文件,用戶每次以命令行登陸方式登陸,則執行該配置文件。此外,如果使用 Wayland 圖形顯示服務器,需設置系統的環境變量,修改/etc/environment,添加的內容同上。
到這里,我仍有困惑,安裝一個輸入法,一共修改了三個配置文件,沒道理呀。對類unix、linux系統知之不深,對應該修改哪個配置文件、為什么要修改那個配置文件的原理尚未搞明白,而且配置文件之間往往互相調用,確實比較復雜。我有“知其所以然”的習慣,靈機一動,抱著試一試的想法,心想也許只修改一個配置文件就行,圖形界面環境下輸入法配置可能不干.cshrc和.profile兩個配置文件的事,遂刪除此前對這兩個文件的修改內容,并重啟操作系統。此后,又試了多個軟件,均能完美輸入中文,終端也可。也就是說,對GhostBSD桌面環境而言,安裝fcitx5,僅配置.xprofile即可。
此外,在ubuntu、manjaro、Fedora、Elementary上也安裝了fcitx,期間也用過ibus,誰好誰差說不上,對我而言,只要能輸入中文即可。過去,每安裝一個系統,都是臨時抱佛腳,系統出問題重裝后也不能熟練重復操作,事后也并未及時總結作筆記。我體會,整非win操作系統,最初的難關無非是顯卡驅動和輸入法。之所以想試用GhostBSD,主要是因為沒整過類Unix,加之聽說蘋果macos與FreeBSD頗有淵源,就想試試FreeBSD,因習慣一體化的安裝方式,就先試了HellosSystem,與macos有幾分相像,因升級后無法重啟加之官方文檔較少就放棄了,轉而試用的GhostBSD。
體會:學習linux、類unix最好的辦法還是看官方說明,有時指望搜索引擎難以解決問題,系統不一樣、環境不一樣,且考慮到類unix、linux的系統的多樣性,網友提供的方法有時不具有可復制性,難以掌握原理,時間花得多,知識碎片化,知其然但不知其所以然。
附件:這是當時安裝zh-fcitx5-chinese-addons后終端的提示,指導如何配置。但最后的方法其實并不是按這個提示做的。實事求是地講,對操作系統的還知之甚少。配置文件文件太多,相互的對應關系是怎么樣的,暫未弄明白,而要詳細了解操作系統的啟動過程,查看配置文件的相互調用關系、了解配置文件的影響范圍,弄通后,解決問題就會水到渠成。重要的是思路框架,而不是操作方法,形成解決一個問題的思維導圖;方向不對,努力白費。
Message from fcitx5-5.0.4:
--
Remember to set the environment variable XMODIFIERS:
??? csh/tcsh:??? setenv XMODIFIERS @im=fcitx
??? sh/bash:??? export XMODIFIERS='@im=fcitx'
For GTK+ programs, you may want to set:
??? csh/tcsh:??? setenv GTK_IM_MODULE fcitx/xim
??? sh/bash:??? export GTK_IM_MODULE=fcitx/xim
For Qt programs, you may want to set:
??? csh/tcsh:??? setenv QT_IM_MODULE fcitx
??? sh/bash:??? export QT_IM_MODULE=fcitx
To start fcitx with your desktop, just
??? cp /usr/local/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/
總結
以上是生活随笔為你收集整理的GhostBSD安装Fcitx中文输入法备忘录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报表XML导出rtf格式,结果在浏览器中
- 下一篇: 套接字接口