使用linux最沮丧的事情莫过于中文输入法切换不出来,甚至有人错误地认为,要使用中文输入法,必须把“区域和语言”(Region Language)设置为中国-中文。输入法只是一个软件,和区域设置没有什么必然联系。如果你在初始化安装系统的时候,选择了中文,倒是会帮你把中文输入法打包安装好。
所以和我一样使用en-us区域设置的朋友,如果输入法出了问题,怎么排查解决呢?
首选你必须安装一个中文输入法,推荐小企鹅
sudo yum install fcitx-pinyin
但是,安装完后,发现按 ctrl+space 却没有召唤出输入法。需要在终端中执行
选中当前输入法为FCITX,并进行基本的设置。 大部分情况下,至此你就可以正常地使用一个中文输入法了。
在早期的一些教程中,会强调在X环境变量(例如~/.xprofile,~/.xinitrc,~/.xinputrc )中声明环境变量来保证输入法正常启动。实际上没有必要。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”
现在的发行版喜欢用软链接来管理设定,系统读取的位置不变(认准软链接),用户设定时改变软链接的实际指向,这是一个漂亮的解耦做法。如果你开发过跨平台跨环境的应用,就知道兼容适配有多麻烦,一个简单易行的方案有多宝贵。
来看看Fedora20里面是怎么做的。
所以当你用标准姿势安装并设定过输入法,最后是可以通过软链接指向正确关联。 反正 /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简介及常用操作介绍