#!/usr/bin/env bash
# QQ 智能启动：已运行则激活主窗口，否则正常启动

QQ_BIN="/usr/bin/linuxqq"
APP_IDS=("qq" "QQ" "linuxqq")

# 1) QQ 进程没在跑 → 直接启动
if ! pgrep -f "/opt/QQ/qq" >/dev/null 2>&1; then
    exec "$QQ_BIN" "$@"
fi

# 2) 进程在跑：先检查 niri 里有没有已 map 的 QQ 窗口，有就直接 focus
WIN_ID=""
if command -v niri >/dev/null 2>&1; then
    # 解析 niri 输出：找 App ID 匹配的第一行所属 Window ID
    current_id=""
    while IFS= read -r line; do
        if [[ "$line" =~ ^Window\ ID\ ([0-9]+): ]]; then
            current_id="${BASH_REMATCH[1]}"
        elif [[ "$line" =~ ^\ +App\ ID:\ \"([^\"]+)\"$ ]]; then
            app="${BASH_REMATCH[1]}"
            for match in "${APP_IDS[@]}"; do
                if [[ "$app" == "$match" ]]; then
                    WIN_ID="$current_id"
                    break 2
                fi
            done
        fi
    done < <(niri msg windows 2>/dev/null)
fi

if [[ -n "$WIN_ID" ]]; then
    niri msg action focus-window -- "$WIN_ID" >/dev/null 2>&1
    exit 0
fi

# 3) 进程在跑但窗口没在 niri → 隐藏在托盘的情况
#    Electron 的 requestSingleInstanceLock：第二次执行会让第一实例显示主窗口然后自己退出
exec "$QQ_BIN" "$@"
