[Tutorials] Deepin 25 搜狗输入法挂掉的排查
Tofloor
poster avatar
138******73
deepin
2026-08-07 11:33
Author

记一次 Deepin 25 搜狗输入法挂掉的排查

前两天手贱升级了下系统,搜狗就嗝屁了。Ctrl+Space 没反应、点托盘图标也没用,只能打英文。查了一圈发现其实就一个烂坑,顺手记一下。

环境:Deepin 25, fcitx5, sogou-ime-ng 10.0.10, X11。


先看下进程和配置

bash****复制

ps aux | grep -E 'fcitx5|cpis' | grep -v grep
cat ~/.config/fcitx5/profile

搜狗新一代(sogou-ime-ng)拆成了几个独立进程:

cpis-engine-service      ← 引擎
cpis-panel-service       ← 面板
cpis-hotkey-service      ← 热键
ISE_NODE                 ← fcitx5 addon 拉起来的子进程

再加上 fcitx5 主进程,正常情况下一共 5 个。少了任何一个都废。

~/.config/fcitx5/profile 里搜狗的 entry 长这样:

ini****复制

Name=com.sogou.ime.ng.fcitx5.deepin

profile 里没有的话手动加上,Items 列表第一位放搜狗。


坑在哪里

不看日志根本想不到:

E addonloader.cpp:95] Failed to create addon: dbus
Unable to request dbus name. Is there another fcitx already running?

fcitx5 上一次退出的时候 dbus name org.fcitx.Fcitx5 没释放干净,新进程抢不到这个名字,dbus addon 直接加载失败。dbus 一挂,xcb hotkey 也没了,Ctrl+Space 当然是死的。

验证一下:

bash****复制

killall fcitx5 fcitx5-helper 2>/dev/null
sleep 2

# 如果返回 true,说明名字还在被占着
dbus-send --session --dest=org.freedesktop.DBus --type=method_call \
  --print-reply /org/freedesktop/DBus \
  org.freedesktop.DBus.NameHasOwner string:org.fcitx.Fcitx5

修复

1. 彻底干掉残留

bash****复制

killall -9 fcitx5 fcitx5-helper 2>/dev/null
sleep 3

# 确认返回 false
dbus-send --session --dest=org.freedesktop.DBus --type=method_call \
  --print-reply /org/freedesktop/DBus \
  org.freedesktop.DBus.NameHasOwner string:org.fcitx.Fcitx5

2. 拉起搜狗的后台

bash****复制

export GDK_BACKEND=x11 QT_QPA_PLATFORM=xcb LANG=zh_CN.UTF-8

/opt/apps/com.cpis/bin/cpis-engine-service \
  --ini /opt/apps/com.cpis/etc/ise.ini --type ini &

/opt/apps/com.cpis/bin/cpis-panel-service \
  --ini /opt/apps/com.cpis/etc/isp.ini --type ini &

3. profile 补上搜狗

bash****复制

cat > ~/.config/fcitx5/profile << 'EOF'
[Groups/0]
Name=默认
Default Layout=us
DefaultIM=com.sogou.ime.ng.fcitx5.deepin

[Groups/0/Items/0]
Name=com.sogou.ime.ng.fcitx5.deepin
Layout=

[Groups/0/Items/1]
Name=keyboard-us
Layout=

[GroupOrder]
0=默认
EOF

4. 起 fcitx5

bash****复制

fcitx5 -d

日志里看到这行就对了:

Loaded addon com.sogou.ime.ng.fcitx5.deepin-addon
CPISModuleIMFcitx5::activate

5. 开机自启

Deepin 有时候不会自动拉搜狗的服务,加两个 desktop 到 autostart:

bash****复制


收工。就一个 dbus name 没释放的问题,绕了一大圈。fcitx5 的日志其实写得很清楚,只是平时没人注意看。

Reply Favorite View the author
All Replies
avatar
jiutian123
deepin
2026-08-07 14:32
#1

遇到卡顿,输入显示慢

Reply View the author
avatar
商店运营-小七
Moderator
2026-08-07 18:05
#2

like

Reply View the author
avatar
豆浆包子
deepin
2026-08-07 19:17
#3

我最近更新以后也不能切换输入法了。

Reply View the author
avatar
138******73
deepin
5 hours ago
#4

Deepin 25.2.1 升级后搜狗输入法失效修复记录

环境:Deepin 25.2.1(X11)、fcitx5、sogou-ime-ng 10.0.10 现象:升级后打不出中文,托盘能切输入法但敲键盘不出字。

结论

升级弄丢了 ~/.dde_env。它是 Deepin 25 会话里输入法变量的唯一来源,丢了之后程序启动时没有 GTK_IM_MODULE,就不会连 fcitx5,按键直接进程序。重建文件 + 注销重登录即可。

为什么通用教程在 Deepin 25 上没用

Deepin 25 会话链:lightdm → dde-session → /etc/X11/Xsession.d/00deepin-dde-env 脚本 source $HOME/.dde_env。该脚本还把 GTK_IM_MODULE/QT_IM_MODULE/XMODIFIERS 列进 EXCLUDED_ENV 从 systemd 用户环境排除。所以:

  • ~/.xprofile:lightdm 不读,无效
  • /etc/environment 或 systemd 环境:被过滤,无效
  • 只有 ~/.dde_env 有用

GTK/Qt 只在启动那一刻读这些变量。没有就永远不加载输入法模块——这就是"图标能切、字打不出"的原因,切换只是改指示器,按键没走到 fcitx5。

排查

bash****复制

ps aux | grep -E 'fcitx5|cpis' | grep -v grep          # 应有 fcitx5 + 3个 cpis 进程
tr '\0' '\n' < /proc//environ | grep -E 'GTK_IM_MODULE|XMODIFIERS|QT_IM_MODULE'  # 看程序有没有拿到变量,空=旧进程
fcitx5-remote -n                                       # 当前输入法名(fcitx5 无 -l 参数)
cat ~/.dde_env                                         # 应含下方 5 行 export
cat ~/.config/fcitx5/profile                           # Items/0 应为搜狗,升级常把它改回 pinyin

修复

bash****复制

若 autostart 缺 hotkey,补 ~/.config/autostart/com.cpis.hotkey.service.desktop(Exec 指向 /opt/apps/com.cpis/bin/com.cpis.hotkey.service.start.sh)。fcitx5 有系统级自启,不用自己加。

最后注销重登录(或重启)。~/.dde_env 只在登录时读取,不改会话旧程序永远拿不到变量。

验证

注销后:echo $GTK_IM_MODULE 应为 fcitxfcitx5-remote -n 应为 com.sogou.ime.ng.fcitx5.deepin,Ctrl+Space 能打中文即可。

防复发

大版本更新后查两处:~/.dde_env 在不在、profileItems/0 是不是搜狗。建议备份这两个文件,更新后 diff,被改直接还原。改完注销重登录。

走过的弯路

先以为是 dbus name 没释放(清残留缓解,表面),后又发现 profile 被重置(修回去管一阵,也不是根因),最后才定位到 ~/.dde_env 缺失导致整个会话无变量。前面都只修表面,所以每次更新都复发。重建 .dde_env + 修 profile + 注销重登录后彻底解决。

Reply View the author