[Problem feedback] Deepin V25.2.1 升级后应用无法输入中文的排查与解决
Tofloor
poster avatar
毛毛虫
deepin
8 hours ago
Author

Deepin V25.2.1 升级后应用无法输入中文的排查与解决

背景

办公电脑一直使用 Deepin 25 搭配 fcitx5-rime 作为中文输入法,长期运行稳定。近期将系统从 V25.2.0 升级到 V25.2.1 后,突然发现一个诡异现象:

  • 系统终端(deepin-terminal)、写字板等原生应用里,Ctrl + Space 完全无法切出中文输入法,只能输入英文。
  • 但在 Microsoft Edge 浏览器中,中文输入一切正常。
  • 回退到 V25.2.0 版本后,问题消失,再次升级又复现。

由于日常严重依赖终端和编辑器,该问题直接影响工作效率,因此进行了彻底排查,并最终找到根因。本文记录整个排查过程和最终方案,并分享其中踩到的 “坑”

故障现象

  1. 受影响程序:deepin-terminal、deepin-editor、以及其他通过启动器打开的 GTK/Qt 原生应用。
  2. 不受影响程序:Microsoft Edge(以及可能的其他 Chrome/Electron 应用)。
  3. 输入法守护进程 fcitx5 正常运行,Rime 面板可呼出,配置无误。
  4. 即便重置 fcitx5 配置、重启输入法,问题依旧。
  5. 降级系统版本后一切正常,确认为 V25.2.1 引入的兼容性问题。

初步排查

首先怀疑输入法安装或模块缺失:

dpkg -l | grep fcitx5-frontend

输出显示所有必要模块均已安装(gtk2/gtk3/gtk4, qt5/qt6),无异常。

查看 fcitx5 进程:

ps aux | grep fcitx5

进程正常,fcitx5 -d 成功启动。

尝试官方诊断工具:

fcitx5-diagnose

关键发现——诊断报告中出现大量警告:

  • XMODIFIERS is not set
  • Please set environment variable QT_IM_MODULE to "fcitx"
  • Please set environment variable GTK_IM_MODULE to "fcitx"

核心问题浮出水面:输入法环境变量完全没有被设置

而在 Edge 中之所以能正常输入,是因为 Edge 通过 D-Bus 前端 与 fcitx5 通信,不依赖这些环境变量,因此“免疫”了此问题。这完美解释了“终端不行,浏览器可以”的诡异现象。

为什么升级后变量丢失?

Deepin V25.2.0 时期,系统会在用户登录时自动注入这些变量,确保所有 GUI 应用能连接输入法。升级到 25.2.1 后,这一机制被改变或意外移除,导致变量不再自动设置。由于这些变量并非由 fcitx5 软件包维护,而是桌面环境的责任,因此恢复它们需要手动干预。

第一次尝试:写入 ~/.xprofile(踩坑)

根据 fcitx 官方文档推荐,在 X11 会话下,应将输入法环境变量写入 ~/.xprofile,由 LightDM 在启动图形会话时加载。

执行:

cat >> ~/.xprofile << 'EOF'
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
EOF

注销并重新登录。

结果:变量依然为空,输入法依旧无法使用。

为验证 ~/.xprofile 是否被执行,我们在文件末尾添加测试行:

echo "xprofile loaded: $(date)" >> /tmp/xprofile_load_test.log

注销重登后,检查 /tmp/xprofile_load_test.log文件不存在

结论:LightDM 在 Deepin V25.2.1 中并未加载 ~/.xprofile 这是本次排查遇到的第一个大坑:尽管此配置在多数 Linux 发行版上有效,但 Deepin 特定的 LightDM 配置可能跳过了该文件的读取,或者使用了不同的会话启动流程。

最终解决方案:/etc/environment(全局环境变量)

由于用户级的 ~/.xprofile 不被加载,我们选择使用系统级的全局环境变量文件 /etc/environment。该文件被所有显示管理器和会话类型读取,不依赖任何桌面启动脚本,是最保险的方案。

具体步骤:

  1. 编辑系统环境变量文件:
    sudo nano /etc/environment
    
  2. 添加以下行(注意不要破坏已有内容):
    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
    XMODIFIERS=@im=fcitx
    SDL_IM_MODULE=fcitx
    
  3. 保存后重启计算机(仅注销可能不够,建议直接重启)。
  4. 重新登录后,打开终端验证:
    echo $GTK_IM_MODULE   # 应输出 fcitx
    
  5. 立即打开终端、写字板,输入法恢复正常。

问题总结

  • 根本原因:Deepin V25.2.1 升级后,用户会话不再自动设置 GTK_IM_MODULEQT_IM_MODULEXMODIFIERS 等输入法必需的环境变量。
  • 为什么有的应用正常:Edge 等基于 Chromium 的应用通过 D-Bus 直接与 fcitx5 通信,无需这些变量,因此不受影响。
  • 坑点:LightDM 在新版 Deepin 中不执行 ~/.xprofile,导致传统的用户级配置失效。直接写在 /etc/environment 中则立即生效。
  • 修复方法:将上述变量写入 /etc/environment 并重启。

建议与反思

  1. 系统升级后若出现输入法异常,首要检查环境变量:运行 fcitx5-diagnose 可以快速定位。
  2. ~/.xprofile 并非万能:不同发行版、甚至同一发行版的不同版本,对会话启动脚本的处理可能不一致。遇到不生效时,可尝试 ~/.profile~/.xsessionrc,或直接使用系统级 environment
  3. Deepin 25 用户若遇到相同问题,可直接按本文 /etc/environment 方案修复,避免在 .xprofile 上浪费排查时间。
  4. 如果有条件,建议向 Deepin 社区反馈该回归问题,促使官方在后续更新中恢复变量自动设置。

此案例虽小,但涉及输入法框架、桌面环境启动流程、环境变量作用域等多个知识点,希望能为遇到类似问题的朋友提供清晰指引。


本文基于真实环境:Deepin 25 (X11)、LightDM、fcitx5-rime 5.1.10,内核 6.18.38。问题在 2026 年 8 月复现并解决。

Reply Favorite View the author
All Replies
avatar
vbox
deepin
8 hours ago
#1

这你得问im-config为什么不起作用

虽然我从来不装这个包

Reply View the author
avatar
lucksail
deepin
5 hours ago
#2

玲珑的问题啊,升级后就解决 了。

Reply View the author
avatar
豆浆包子
deepin
5 hours ago
#3

什么鬼,我的输入法也不好用了。这帮人都不做测试的么?

Reply View the author
avatar
CTZ老斑鸠
deepin
5 hours ago
#4

我有更简单粗暴又管用的方式:应用都换成deb的,然后把玲珑卸干净就都好了

Reply View the author