111 lines
3.3 KiB
Bash
111 lines
3.3 KiB
Bash
#!/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 "=========================================="
|