#!/usr/bin/env sh
set -eu

ELECTRON="$1"
APP_ENTRY="src/main.js"
SCREEN="1280x800"

for d in 99 98 97 96 95; do
    if ! xdpyinfo -display ":$d" >/dev/null 2>&1; then
        DISP="$d"
        break
    fi
done

[ -n "${DISP:-}" ] || {
    echo "No free DISPLAY found" >&2
    exit 1
}

echo "Using DISPLAY=:$DISP"

cleanup() {
    kill "$ELECTRON_PID" "$OPENBOX_PID" "$XEPHYR_PID" 2>/dev/null || true
}
trap cleanup EXIT INT TERM

Xephyr ":$DISP" -screen "$SCREEN" -resizeable -ac &
XEPHYR_PID=$!

sleep 1

DISPLAY=":$DISP" openbox &
OPENBOX_PID=$!

sleep 0.5

DISPLAY=":$DISP" "${ELECTRON}" "$APP_ENTRY" &
ELECTRON_PID=$!
DISPLAY=":$DISP" xsetroot -solid "#009999"

while :; do
    if ! kill -0 "$ELECTRON_PID" 2>/dev/null; then
        echo "Electron exited — killing Xephyr"
        kill "$XEPHYR_PID" 2>/dev/null || true
        break
    fi

    if ! kill -0 "$XEPHYR_PID" 2>/dev/null; then
        echo "Xephyr exited — killing Electron"
        kill "$ELECTRON_PID" 2>/dev/null || true
        break
    fi

    sleep 0.5
done

wait "$ELECTRON_PID" 2>/dev/null || true
wait "$XEPHYR_PID" 2>/dev/null || true
