今天博主換操做系統了,以前用的是 CentOS,現在換成 Fedora。主要的緣由仍是 CentOS 安裝一個東西太過折騰了。html
以前用的是 ibus,在 Fedora 上我打算用一下 fcitx。
java
按我以前的一篇博文的方法,基本上不行。這裏博主從新整理一下安裝過程。linux
筆者主要參考這篇文章的方法:Fedora 20 安裝 fcitxshell
如下爲博主親測過程:session
1、首先移除 ibus
ide
sudo yum remove ibus
提示:在 Fedora 22 下,建議使用 dnf 命令代替 yum,使用方法與 yum 徹底一致。
工具
2、而後安裝 fcitx
post
sudo yum install fcitx fcitx-configtool
3、還要安裝中文輸入庫優化
sudo yum install fcitx-table-chinese
這裏博主要特別說明一下:如裏沒有這步,在配置的輸入法的時候就沒有中文輸入法出現。操作系統
4、配置環境變量
要配置 GTK_IM_MODULE, QT_IM_MODULE, XMODIFIERS。
上面3個環境變量是告訴 gtk 或 qt 的界面程序,在輸入時使用指定的輸入法模塊,好比 ibus 或 fcitx 或其它。
因而在 /etc/profile.d/ 下建一個文件 im.sh,這個名字隨意,只要是以.sh結尾就行,具體緣由參考 /etc/profile
內容以下:
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx"
這麼作的目的是每次啓動的時候,上面的這3個環境變量都被設置好。
5、使 fcitx 隨系統啓動
若是不設置這一步的話,那每一次從新登入都得在後臺啓動一次 fcitx
fcitx &
很不太方便~
方法能夠參考:
往 ~/.config/autostart/ 下寫 im.destop 的方式博主試過,不行
編輯 ~/.gnomerc 的方法也試了,不行
博主研究了一下 /etc/X11/xinit/ 目錄下的文件,特別是分析 xinitrc 文件。該文件是界面系統啓動後的執行腳本。
在 /etc/X11/xinit/xinitrc.d/ 目錄下有 50-xinput.sh 文件,裏面提到
那就把啓動加在 ~/.xinputrc 文件裏面,內容爲: "fcitx &" ,退出登入,再試。
此次是能夠的了!一登入就有 fcitx 輸入法。
提示:從新登錄後,~/.xinputrc 文件不會再存在了,它是被X11移到別的路徑下去了(詳見 /etc/X11/xinit/xinitrc.d/50-xinput.sh,L45)。
其實就是被 mv 到 ~/.config/imsettings/xinputrc 文件裏,咱們也能夠直接修改這個文件。
6、優化
感受不該該將環境變量的配置放 /etc/profile.d/ 下,必竟 fcitx 是依賴於 X11 的一個工具,最好全放 ~/.xinputrc 文件裏。
刪除 /etc/profile.d/im.sh,編輯 ~/.xinputrc,內容以下:
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx" fcitx &
完成!從新登入。
7、解決terminal下不能用fcitx問題
解決這個問題的方法很簡單,就是在 ~/.xinputrc 中添加一行,以下:
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx" eval `dbus-launch --sh-syntax --exit-with-session` fcitx &
8、後續遇到的問題
從新了一次系統,安裝的時候選擇的語言是英文,結果就無法按上面的方法設置並啓動 fcitx,解決的辦法就是將系統的 language 切換成中文。
而後從新登入。
此次還發現,在 terminal 下可使用 fcitx,在 firefox 與 gedit 下就用不了。真是懊惱呀!用命令查看咱們設置的兩個環境變量:
$ echo $QT_IM_MODULE fcitx $ echo $GTK_IM_MODULE $
原來,GTK_IM_MODULE 這個環境變量是空的。用命令啓動 gedit
GTK_IM_MODULE=fcitx gedit
這樣啓動的 gedit 就可使用 fcitx 了。看來還真是 "GTK_IM_MODULE" 這個環境變量引發的。
真的好奇怪,爲何 QT_IM_MODULE 有值,而恰恰 GTK_IM_MODULE 卻沒有值呢?爲啥?
解決方法是,將
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx" eval `dbus-launch --sh-syntax --exit-with-session`
放到 /etc/procfile.d/xim.sh 文件中去,而在 .xinputrc 中只放
fcitx &
這樣就解決上面的這個環境變量不到位的問題。
9、再次遭遇 gnome-terminal 不用使用 fcitx 問題
此次我使用了上面全部的辦法都不行,最後找到有一方法是,修改gnome的配置表:
sudo gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"
這就是將 org.gnome.settings-daemon.plugins.xsettings 下的 overrides 選項設置成 {'Gtk/IMModule':<'fcitx'>}
也能夠用 dconf-editor 窗口工具(可能要安裝)來進行設置:
將 {} 改爲 {'Gtk/IMModule':<'fcitx'>} 便可。
注意:這兩種方法都要用 root 權限,不然不會成功。
這樣以後,退出用戶,從新登入便可。
10、再次遭遇 gnome-terminal 不用使用 fcitx 問題
此次是使用了上面的全部辦法,最終的解決辦法是:
/etc/profile.d/xim.sh (沒有就本身建立)
export XIM=fcitx export XIM_PROGRAM=fcitx export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx" eval `dbus-launch --sh-syntax --exit-with-session`
若是發現不奏效,就在終端裏查一下上面的5個環境變量是否有值,必定要確保它們的值爲"fcitx"。對於最後一行,查看環境變量:DBUS_SESSION_BUS_PID 是否有值
建立 ~/.xinputrc 文件:
fcitx &
它的功能就是在啓動gnome時後臺啓動 fcitx從新登入