emcp/scripts/start-emcp-browser.sh
2026-05-26 16:13:35 +08:00

77 lines
2.1 KiB
Bash
Raw 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
LOG_FILE="/userdata/emcp/data/browser-autostart.log"
mkdir -p /userdata/emcp/data
exec >>"$LOG_FILE" 2>&1
echo "==== $(date '+%F %T') start-emcp-browser ===="
echo "USER=$(whoami)"
echo "DISPLAY=${DISPLAY:-}"
echo "XDG_SESSION_TYPE=${XDG_SESSION_TYPE:-}"
echo "DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS:-}"
URL="${EMCP_BROWSER_URL:-http://127.0.0.1:5173/}"
BACKEND_HEALTH_URL="${EMCP_BACKEND_HEALTH_URL:-http://127.0.0.1:8000/}"
FRONTEND_HEALTH_URL="${EMCP_FRONTEND_HEALTH_URL:-$URL}"
BROWSER_PROFILE_DIR="${EMCP_BROWSER_PROFILE_DIR:-/userdata/emcp/data/browser-profile}"
WAIT_TIMEOUT_SECONDS="${EMCP_BROWSER_WAIT_TIMEOUT:-60}"
WAIT_INTERVAL_SECONDS="${EMCP_BROWSER_WAIT_INTERVAL:-2}"
mkdir -p "$BROWSER_PROFILE_DIR"
# 设备仅使用 chromium。找不到 chromium 时直接退出,不再尝试其他浏览器。
# 避免使用 --kiosk降低嵌入式设备启动后卡死风险。
# 独立 profile 可避免浏览器复用旧窗口,导致 fullscreen 参数失效。
# 禁用系统密钥环集成,避免自动登录桌面后启动浏览器时弹出密码解锁提示。
if ! command -v chromium >/dev/null 2>&1; then
exit 1
fi
wait_for_url() {
local target_url="$1"
local elapsed=0
while [ "$elapsed" -lt "$WAIT_TIMEOUT_SECONDS" ]; do
if python3 - "$target_url" <<'PY'
import sys
import urllib.request
url = sys.argv[1]
try:
with urllib.request.urlopen(url, timeout=3) as response:
sys.exit(0 if response.status < 500 else 1)
except Exception:
sys.exit(1)
PY
then
return 0
fi
sleep "$WAIT_INTERVAL_SECONDS"
elapsed=$((elapsed + WAIT_INTERVAL_SECONDS))
done
return 1
}
if ! wait_for_url "$BACKEND_HEALTH_URL"; then
exit 1
fi
if ! wait_for_url "$FRONTEND_HEALTH_URL"; then
exit 1
fi
chromium \
--new-window \
--start-fullscreen \
--start-maximized \
--no-first-run \
--no-default-browser-check \
--password-store=basic \
--use-mock-keychain \
--disable-session-crashed-bubble \
--disable-infobars \
--disk-cache-size=10485760 \
--user-data-dir="$BROWSER_PROFILE_DIR/chromium" \
"$URL" >/dev/null 2>&1 &