在 Linux 系统上使用中文输入法时遇到问题,几乎是不少用户的共同经历。有些人甚至误以为必须将“区域和语言”设置为“中国-中文”才能正常使用输入法——这其实是一个经典误区。输入法本质上只是一个软件,与系统区域设置并无强绑定关系。只不过,如果在安装系统时选择了中文,系统通常会顺带帮你将中文输入法打包进去。
那么,如果你跟我一样使用 en_US 区域设置,输入法出了问题该如何排查和解决?
首先需要安装一款中文输入法,这里推荐小企鹅输入法:
sudo yum install fcitx-pinyin
但安装完成后,按下 Ctrl+Space 可能依然没有响应。此时需要打开终端,执行以下命令:
im-chooser
在弹出的界面中,将当前输入法切换为 FCITX,并进行一些基本配置。大多数情况下,做到这一步就能正常使用中文输入法了。

一些老教程会强调在 X 环境变量文件(例如 ~/.xprofile、~/.xinitrc、~/.xinputrc)中手动声明环境变量,以确保输入法正常启动。实际上,这一步并不是必需的。
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS="@im=fcitx"
现代 Linux 发行版更倾向于使用软链接来管理配置。系统读取的路径不变(只认准软链接),而用户在设置时只需要改变软链接的实际指向——这是一种解耦的好方法。如果你开发过跨平台或跨环境的应用程序,就会知道兼容适配有多麻烦,而这样一个简单易行的方案是多么宝贵。
让我们看看 Fedora 20 中的具体实现:

因此,当你采用标准方式安装并配置好输入法后,最终可以通过软链接指向正确的关联项。毕竟,启动脚本 /etc/X11/xinit/xinitrc.d/50-xinput.sh 只会识别 /etc/X11/xinit/xinputrc。
如果你运气不佳,在运行 im-chooser 时遇到了如下错误:
GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._imsettings_2derror_2dquark.Code5: Current desktop isn't targeted by IMSettings.
不必慌张。尽管 Linux 的易用性还有改进空间,但它一直保留着详细记录错误日志的优良传统。查看 ~/.cache/imsettings/log,你会找到关键的错误日志:
[ 1406594712.769015]: IMSettings-Daemon[7165]: INFO: Attempting to switch IM to FCITX [lang=en_US.utf8, update=true] org.gnome.settings-daemon.plugins.keyboard.active is true. imsettings is going to be disabled.
由于属性 org.gnome.settings-daemon.plugins.keyboard.active 当前值为 true,导致 imsettings 被禁用。解决方法很简单:在终端中将该属性设置为 false 即可。
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
类似的错误也可以通过相同的方式解决。日志详细,心中有数,解决问题自然不慌不忙。
如果你不熟悉 gsettings,可以参考 gsettings 简介及常用操作介绍。
