Ubuntu Wayland + fcitx5 下腾讯会议和微信无法输入中文
问题描述
在 Ubuntu26.04(默认使用Wayland)+ fcitx5 组合环境下,腾讯会议和微信无法输入中文
问题排查
进一步观察,在应用内无法切换中英文,因此腾讯会议可能根本没有连接 Fcitx5 输入法服务器
查看腾讯会议启动脚本/opt/wemeet/wemeetapp.sh,发现其强制使用 XWayland 环境,并且在 Ubuntu 18 以上版本中没有设置export XMODIFIERS=@im=fcitx 和 export QT_IM_MODULE=fcitx,即使腾讯会议自带了 QT 插件,也不会自动选择。
因此在 XWayland 中运行的腾讯会议无法使用 Wayland 原生的输入法协议。
点击查看代码
if [[ ${main} -le "18" ]];then
if [ $XMODIFIERS ];then
im_module=$XMODIFIERS
echo 'use XMODIFIERS'
export QT_IM_MODULE=${im_module#*=}
elif [ $GTK_IM_MODULE ];then
echo 'use GTK_IM_MODULE'
export QT_IM_MODULE=${GTK_IM_MODULE}
fi
echo ${QT_IM_MODULE}
fi
if [ "$XDG_SESSION_TYPE" = "wayland" ];then
if [ -f "/opt/x11-wayland/x11-ext.sh" ];then
source /opt/x11-wayland/x11-ext.sh
else
export QT_QPA_PLATFORM=xcb
export XDG_SESSION_TYPE=x11
unset WAYLAND_DISPLAY
export WEMEET_XWAYLAND=1
fi
fi
export QT_PLUGIN_PATH="${HERE}/plugins"
解决方案
解决方案是在/opt/wemeet/wemeetapp.sh 或 /opt/x11-wayland/x11-ext.sh 中导出环境变量
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
# 可能混合使用 GTK 和 QT
export GTK_IM_MODULE=fcitx
微信使用的同样是 XWayland,因此解决办法类似
- 直接使用
env XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx /usr/bin/wechat启动 - 创建用户级启动器:将
Exec=/usr/bin/wechat %U修改成Exec=env XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx /usr/bin/wechat %U;然后直接点击图标启动
mkdir -p ~/.local/share/applications
cp /usr/share/applications/wechat.desktop ~/.local/share/applications/wechat.desktop
vim ~/.local/share/applications/wechat.desktop
[Desktop Entry]
Name=wechat
Name[zh_CN]=微信
Exec=env XMODIFIERS=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx /usr/bin/wechat %U
StartupNotify=true
Terminal=false
Icon=/usr/share/icons/hicolor/256x256/apps/wechat.png
Type=Application
Categories=Utility;
Comment=Wechat Desktop
Comment[zh_CN]=微信桌面版

浙公网安备 33010602011771号