刚更新桌面,发现TelegramDesktop无法输入中文。当然,你可以耐心的在其他地方慢慢打字粘贴,但是速度太慢了,更何况是明显简单的打字问题,正常人怎么甘心呢?想了想,还是决定把问题报上去。然后借助ilya-fedin,发现较新版本的iBus会参考$WAYLAND_DISPLAY参数来确定socket的名字,但是Qt还没有适应这个变化,引用了错误的iBussocket,导致在无法接收任何iBus输入,但只能显示英文字母。同样的问题应该适用于.deb/.rpm/tarball安装的任何Qt软件。为什么Flatpak沙箱没有问题?神奇的是,经过测试发现使用Flatpak沙箱封装的TelegramDesktop)没有受到影响。一开始,Flatpak显然对iBus不满意,为什么现在克服了呢?本来,为了解决Flatpak环境下的输入问题,Flatpak修改了软件与输入法通信的特性。不是通过普通的org.freedesktop.portal.IBus接口接受输入,而是使用org.freedesktop.IBus.Portal接口。除了使用Flatpak打包外,还可以通过环境参数IBUS_USE_PORTAL=1来强制普通Linux打包软件使用相同的特性[参考],Qt也引入了相关特性。这大概是为了方便调试和测试功能,能起到意想不到的帮助。解决方案为了一次性解决所有Qt软件的输入问题,不可能在每个.desktop文件中一一修改添加IBUS_USE_PORTAL=1。比较合法的方法是在全局参数中加上IBUS_USE_PORTAL=1,所有Qt软件都会一起受益。稍作阅读后,最安全的方法是使用freedesktop.org的标准用户会话环境配置文件位置$HOME/.config/environment.d/*.conf来处理:mkdir-p$HOME/.config/environment.decho"IBUS_USE_PORTAL=1">$HOME/.config/environment.d/99-ibus-use-portal.conf添加后,重启电脑(不知道为什么,简单的注销再登录也没用),然后进入TelegramDesktop或其他Qt软件,你会CaninputChinese:Chinesecharacterscanout!希望这个方法也能解决你的问题。
