Fedora 22 上安装 fcitx 五笔输入法

今天博主换操做系统了,以前用的是 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 &

很不太方便~

方法能够参考:

如何为Gnome3添加自启动程序

在Gnome下安装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从新登入

相关文章
相关标签/搜索