如果你正在 Ubuntu 22.04 上同时使用 Google Chrome 和搜狗输入法,某次 Chrome 升级之后突然发现中文打不出来了、候选框消失、或者网页输入框里只能敲出英文字母,那这篇文章就是专门给你写的。这个问题在近一两年里出现频率很高,我自己的几台 Ubuntu 机器都遇到过,网上搜到的方案也五花八门,但真正能对症下药的不多。我会把背后的原理、排查手段、以及四套实测有效的修复方案一次性讲清楚。
先说明一下适用范围:本文针对的是 Ubuntu 22.04 桌面环境(GNOME 为主)、搜狗输入法 Linux 版、以及 Google Chrome(包括 Chromium 内核的衍生版本)。文章不光是给“直接抄作业”的命令,更重要的是会让你明白为什么升级后会冲突、怎么才能不改几十次配置就彻底搞定它。
1. 同样是打不了中文,三种现象背后的根因可能完全不同
很多人一搜“Chrome 搜狗输入法冲突”,就以为是个单一问题,其实并不是。我拆解下来,“冲突”至少有三种表现,它们的诱发点不一样,排查方向也不一样。
1.1 现象一:输入法切换不起来,只有英文能上屏
这是最普遍的情况:Chrome 升级后,按 Ctrl+Space 或者系统快捷键,输入法图标有响应,但在 Chrome 的地址栏、网页输入框里,敲出来的始终是英文。换个应用却一切正常,比如在 Gedit、终端、VS Code 里都能正常打出中文。
这个现象基本说明问题出在 Chrome 自身,而不是系统全局输入法坏了。Chrome 从某个版本开始,对 Linux 下的输入法对接方式做了调整,尤其是从传统的 X11 接口向 Wayland 接口过渡时,输入法模块的加载路径变了,导致 fcitx 这一套老接口被绕开。
1.2 现象二:候选框不出现或出现在屏幕左上角
另一类情况是中文能上屏,但候选框不跟随光标,孤零零地出现在屏幕左上角,或者干脆不显示。更诡异的是,有时候你在一个输入框里打拼音,选完字才能看到结果,全程没有候选框反馈。
这种问题多半是 Chrome 走了 XIM(X Input Method)通道,而 XIM 本身没有实现候选框跟随能力。也就是说,Chrome 没有加载 fcitx 的 GTK IM 模块,而是把输入法当成一个传统的 XIM 客户端来用。搜狗输入法在 XIM 模式下基本能用,但体验很差,候选框位置经常乱跑。
1.3 现象三:升级后中文全部变成“方块”
第三种情况比前两种看起来更吓人:打字能打,中文也确实上屏了,但屏幕上显示的是一堆方框“□□□□”。很多人以为是 Chrome 升级后把中文字体弄丢了,开始重装字体,结果重启 Chrome 又复发。
其实这个问题的根子是输入法框架和字体加载的混合问题。Chrome 在加载某些输入法模块时,字符集判断可能出现偏差,导致 fallback 到一个没有中文字形的字体。也有可能是系统里缺少主流 CJK 字体,尤其是新装的 Ubuntu 22.04 只装了最小字体集。这个现象后面我会单独讲解决办法。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手之前,用5分钟精确定位问题根源
我不建议一上来就改配置。先做一轮 5 分钟的诊断,把问题定位清楚,比盲目复制网上的命令靠谱得多。下面三个步骤按顺序执行,基本能确定 90% 以上的原因。
2.1 先确认搜狗输入法和 fcitx 本身是否健康
第一步,先在 Chrome 之外的应用里测试一下输入法。打开文本编辑器,按 Ctrl+Space 切换输入法,看能否正常输入中文、候选框是否正常跟随。
如果全局都不行,那说明问题不在 Chrome,而在 fcitx 或搜狗输入法本身的安装上。这时候建议直接跑一遍 fcitx-diagnose:
bash复制fcitx-diagnose
这个命令会输出一长串诊断信息,不要慌,重点看这几个地方:
Current input method framework一行的值是不是fcitx,如果显示ibus,说明系统还在用另一个输入法框架,这是大坑之一。GTK IM module相关的段落,看 fcitx 的 GTK 输入法模块有没有找到,路径通常类似/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-fcitx.so。XMODIFIERS一行的值是否为@im=fcitx。
如果 fcitx 本身有问题,后面给 Chrome 做任何修补都白搭。建议先把
