#!/bin/bash
# 由 KasmVNC base 的 openbox 会话在桌面就绪后执行（以 app 用户身份）。
# 微信本体由面板经 docker exec 触发下载/解压到数据卷 /config/wechat（见 wechat-ctl.sh），
# 本脚本只负责：等待微信就绪 + 常驻拉起（关窗自动重开；更新后从新版本路径重启）。

set -u

WECHAT_BIN=/config/wechat/opt/wechat/wechat

# 容器内无 GPU，强制软件渲染
export LIBGL_ALWAYS_SOFTWARE=1

# 防“最小化后丢失”：本桌面（openbox）无任务栏，微信被最小化就无处恢复 → 黑屏。
# 看守进程：每 2s 把“被最小化（不可见）”的顶层窗口重新激活，相当于禁用最小化。
(
    export DISPLAY="${DISPLAY:-:1}"
    while sleep 2; do
        all=$(xdotool search --name '.+' 2>/dev/null) || continue
        vis=$(xdotool search --onlyvisible --name '.+' 2>/dev/null)
        for w in ${all}; do
            printf '%s\n' "${vis}" | grep -qx "${w}" || xdotool windowactivate "${w}" 2>/dev/null || true
        done
    done
) &

# 1) 等待微信安装就绪（首次需在面板点「下载并安装」）
notified=0
while [ ! -x "${WECHAT_BIN}" ]; do
    if [ "${notified}" -eq 0 ]; then
        echo "[autostart] 微信尚未安装，等待面板触发下载…（首次使用请在面板点「下载并安装微信」）"
        notified=1
    fi
    sleep 2
done

# 3) 常驻拉起微信
while true; do
    if [ ! -x "${WECHAT_BIN}" ]; then
        # 更新过程中本体被临时挪走，等就位再继续
        sleep 2
        continue
    fi
    echo "[autostart] 启动微信: ${WECHAT_BIN}"
    "${WECHAT_BIN}"
    echo "[autostart] 微信已退出，2 秒后重启"
    sleep 2
done
