Linux下基于Electron的程序ibus输入法问题
Linux下基于Electron的程序ibus输入法问题
最近想体验一下KDE Plasma桌面,遇到一个问题,就是浏览器输入不了中文,Edge、Chrome都一样,当然它们都是基于Chromium的,出同样的问题很正常。后面发现Visual Code也有同样的问题,最后解决办法都是一样的,才发现它们都是基于一个很牛的框架Electron。
问题表现还是明显,就是切换到中文输入的时候,会弹出一个标题为“ibus-ui-gtk3”的窗口,虽然有时候这个缩成了一个竖线,但是任务栏里有图标,切换到这个窗口是可以用鼠标放大的。这应该就是输入法的候选字框,只是无论用什么输入法,激活这个窗口的时候,看上去也会有候选字出现,不过一激活输入目标的窗口这个窗口就缩小了,字也上不去。但是并不是所有程序都有这个问题,比如系统终端上就是好好的。最初发现问题的时候,在网上搜了很多办法,说得最多的是要求配置下面这三个环境变量:
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
当然,我用的是ibus肯定是要把上面的fcitx换成ibus,不过没有作用,而且桌面还会提示不要配置这几个环境变量。实在无法了,换成用fcitx输入法,倒是可以输入了,不过会跳字符,也就是按键快了之后有些键没有被fcitx收到直接到了目标窗口,看来ubuntu、fedora默认是ibus输入法的原因吧。总之,还是想换回ibus,但是必须解决这几个程序输入不了中文的问题。
最终的解决方案是:在这些程序的命令行参数里面加上
--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4
原理是什么还不太明白,反正之前用GNOME桌面的时候没有发现这个问题。大概跟显示管理器相关。因为每一次搜索这个问题的正确解决办法都搜出一大堆无用的东西,所以把它记下来,方便需要的时候好找一些。