让 fcitx 和 ibus 输入法和谐共处

我的机器上同时安装有 i3wm 和 gnome3,由于众所周知的原因,ibus 是被强制安装的。但是我又想实现在 gnome3 使用 ibus 输入法,到了 i3wm 下则可以转用 fcitx 输入法,那么该如何配置才能让输入法的环境变量互不冲突?

由于我是通过 gdm 来启动各个 xsession 的,因此 ~/.xinitrc 文件就没有用了。~/.xprofile 文件虽然可以让我在 i3wm 下顺利使用 fcitx,但是到了 gnome3 下面就会破坏掉 ibus 的环境变量,导致无法输入中文。而 i3wm 又不像 openbox 那样,有个专用的 environment 文件可供配置环境变量。

要实现这个需求,那么只要设法在配置文件中指明,当检测到当前 xsession 为 i3wm 时,就自动采用 fcitx 的环境变量即可,ibus 的我们不用管,因为 gnome3 不需要设置输入法的环境变量。

在经过多方搜索以后,我在 i3wm 的官方 FAQ 中发现了线索,过程和原理就不解释了,且当作一份备忘吧。

要实现文章开头的需求,只需要在 ~/.profile 中加入以下内容即可:

1
2
3
4
5
if [ "$DESKTOP_SESSION" = "i3" ]; then
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
fi

这个配置的作用一目了然,检测到当前 xsession 为 i3wm 时,就自动采用 fcitx 的环境变量。

这么一来,就可以在 i3wm 使用 fcitx,而在 gnome3 使用 ibus 了,两者互不冲突。