前言
近段时间,我报名参加了软件杯大赛,赛题为设计一个能够运行在银河麒麟系统上的运维智能体,(且系统需运行在国产龙芯架构上)。但是我没有想到,系统自带的龙芯浏览器[1]居然在默认情况下无法使用中文输入法,从而导致无法键入中文。所以这篇文章将会介绍下如何解决这个问题。
问题表现与相关信息
本问题发生在软件杯大赛发放的比赛用虚拟机上。CPU架构为loongarch,芯片为Loongson-3A5000。操作系统版本为 “银河麒麟高级服务器操作系统V11(2503)”,龙芯浏览器大版本为V3 ,详细版本号为3.3.1814.2。如图1所示。

当我们在任意其他应用,比如图2中的银河麒麟系统的全局搜索页面中,输入法是可以正常使用的。

但是在龙芯浏览器中,如图3,即使输入法是启用的,无论如何都无法显示输入法窗口,无法正确键入中文。

问题分析
经过我的各种测试,发现龙芯浏览器作为 GTK/CHROMIUM程序,在默认情况下并没有正确加载GTK输入法模块。经过进一步的排查后发现,系统中的immodules.cache没有正确生成,导致龙芯浏览器无法接入Fcitx5[2],从而致使浏览器启动时候无法加载输入法。所以重新生成输入法模块缓存即可解决这个问题。
解决方案
首先下列操作均需要系统root权限,先用下面命令提升到root权限。(请勿多次输错密码,银河麒麟操作系统服务器版本输错多次密码会锁定)
sudo su
拿到权限后执行下面命令,安装缺少的组件,并重构输入法缓存。
dnf install fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-gtk fcitx5-qt
sh -c '/usr/bin/gtk-query-immodules-2.0-64 > /usr/lib64/gtk-2.0/2.10.0/immodules.cache'
sh -c '/usr/bin/gtk-query-immodules-3.0-64 > /usr/lib64/gtk-3.0/3.0.0/immodules.cache'
安装过程中可能需要输入y字符来进行确认。执行完成后的界面如图4所示

此时打开龙芯浏览器,重新尝试键入中文,此时可以发现输入法能够正常工作了,如图5所示,问题解决。
