Files
qiming/qiming-rcoder/docker/rcoder-agent-runner/fix-chrome-ime-final.sh
2026-06-01 13:54:52 +08:00

111 lines
3.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Chromium 中文输入法修复工具fcitx5 方案)
# 使用方法:在 VNC 终端中运行 fix-ime
echo "=========================================="
echo " Chromium 中文输入法修复工具"
echo "=========================================="
echo ""
# ========== 加载全局输入法环境 ==========
if [ -f /etc/profile.d/ime-env.sh ]; then
source /etc/profile.d/ime-env.sh
echo "✓ 已加载全局输入法环境配置"
else
echo "⚠ 未找到全局配置,手动设置环境变量"
# 设置环境变量
export DISPLAY=:0
export XDG_RUNTIME_DIR=/run/user/1000
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export INPUT_METHOD=fcitx
# 导入 D-Bus 会话地址
if [ -f /tmp/dbus-session-env ]; then
source /tmp/dbus-session-env
fi
fi
echo "当前环境变量:"
echo " DISPLAY=$DISPLAY"
echo " GTK_IM_MODULE=$GTK_IM_MODULE"
echo " XMODIFIERS=$XMODIFIERS"
echo " LANG=$LANG"
echo " DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS"
echo ""
echo "第 1 步:检查 fcitx5 状态..."
if pgrep -x fcitx5 > /dev/null; then
echo " ✓ fcitx5 已在运行 (PID: $(pgrep -x fcitx5 | head -1))"
else
echo " ⚠ fcitx5 未运行,正在启动..."
fcitx5 -d --replace >/tmp/fcitx5.log 2>&1 &
sleep 2
if pgrep -x fcitx5 > /dev/null; then
echo " ✓ fcitx5 启动成功"
else
echo " ✗ fcitx5 启动失败,查看 /tmp/fcitx5.log"
fi
fi
echo ""
echo "第 2 步:停止所有 Chromium 进程..."
killall -9 chromium chrome 2>/dev/null || true
sleep 2
echo "✓ Chromium 进程已清理"
echo ""
echo "第 3 步:使用正确的环境变量启动 Chromium..."
echo "提示Chromium 将继承以下输入法环境:"
echo " - GTK_IM_MODULE=fcitx"
echo " - XMODIFIERS=@im=fcitx"
echo " - LANG=C.UTF-8"
echo ""
/usr/bin/chromium \
--user-data-dir=/home/user/chromium-data \
--no-sandbox \
--disable-dev-shm-usage \
--remote-debugging-port=9222 \
--remote-debugging-address=0.0.0.0 \
--no-first-run \
--no-default-browser-check \
--password-store=basic \
--use-mock-keychain \
>/tmp/chromium-ime.log 2>&1 &
sleep 3
if pgrep chromium > /dev/null; then
echo " ✓ Chromium 启动成功 (PID: $(pgrep chromium | head -1))"
# 验证 Chromium 是否继承了正确的环境变量
CHROME_PID=$(pgrep chromium | head -1)
echo ""
echo "验证 Chromium 环境变量:"
cat /proc/$CHROME_PID/environ | tr '\0' '\n' | grep -E "(GTK_IM_MODULE|XMODIFIERS|LANG)" || echo " ⚠ 警告:未找到输入法环境变量"
else
echo " ✗ Chromium 启动失败,查看 /tmp/chromium-ime.log"
exit 1
fi
echo ""
echo "=========================================="
echo " ✅ 修复完成!"
echo "=========================================="
echo ""
echo "现在请测试:"
echo " 1. 在 Chromium 中访问 baidu.com 或任何网页"
echo " 2. 点击输入框(搜索框、文本框等)"
echo " 3. 按 Ctrl+Space 切换输入法"
echo " 4. 输入拼音(如 nihao应显示候选词"
echo ""
echo "如果仍无法输入中文,请尝试:"
echo " - 重启容器使环境变量全局生效"
echo " - 或者使用 'source /etc/profile.d/ime-env.sh' 再次运行本脚本"
echo "=========================================="