最近更新了ubuntu17.10,更到了gnome桌面,其实使用体验上我感觉unity更好一点,可能也是因为我不习惯吧,不过gnome感觉现在bug也是挺多的,我今天就要讲一个关于如何修复更新gnome之后导致fcitx输入法不能在idea或者是java软件环境中使用中文的问题。
其实这个问题并不仅仅只是17.10才有,很多时候版本更新都会产生这个问题。不过今天我就讲讲我所遇到的。我在更新了17.10之后,我发现我的fcitx输入法不能在用java写的软件中切换成其他语言了,关于这个问题我研究了好久。首先是用指令:
fcitx-diagnose
打印出来以后校对变量发现
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS="@im=fcitx"
配置完全正确。但是依然跑不了,经过很多次尝试以后,我发现这是一个软件启动顺序问题导致fcitx不能完美启动。正常来说我们是登录完成就启动fcitx,但是这种启动顺序会导致fcitx出现刚刚所说的bug,而解决这个bug的办法就是延迟启动fcitx。但是fcitx延迟启动又会导致另外一个bug,就是fcitx不能真正启动,在后台能查看得了fcitx的线程号,但是事实上并没有真正启动出来。
我在*上找了一下解决办法,发现有一个解决办法可以解决的了这个问题。就是让fcitx延迟启动导致其不能正确启动,然后当完成登录以后再kill了原来的进程,然后再次启动fcitx,当延迟启动完成以后fcitx就能正确地完成启动,解决刚刚所说的bug。
命令如下:
pidof fcitx | xargs kill #找到原有的fcitx端口并kill掉
fcitx #开启fcitx
你可以把这两行命令写到一个脚本文件里面,然后登录完成以后直接运行脚本即可。