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桌面的時候沒有發現這個問題。大概跟顯示管理器相關。因為每一次搜索這個問題的正確解決辦法都搜出一大堆無用的東西,所以把它記下來,方便需要的時候好找一些。