Files
codegirl-games/agentbox/environment/entrypoint.sh
T
2026-08-17 16:40:23 +00:00

64 lines
1.3 KiB
Bash

#!/bin/sh
set -eu
export HOME=/tmp/home
export XDG_RUNTIME_DIR=/tmp/runtime
mkdir -p "$HOME" "$XDG_RUNTIME_DIR"
chmod 0700 "$XDG_RUNTIME_DIR"
cleanup() {
rm -f /tmp/agentbox-ready
kill "${OPENBOX_PID:-}" "${XVFB_PID:-}" 2>/dev/null || true
wait "${OPENBOX_PID:-}" "${XVFB_PID:-}" 2>/dev/null || true
}
terminate() {
trap - EXIT INT TERM
cleanup
exit 0
}
trap cleanup EXIT
trap terminate INT TERM
Xvfb "$DISPLAY" -screen 0 640x480x24 -nolisten tcp -noreset &
XVFB_PID=$!
attempt=0
until xdpyinfo -display "$DISPLAY" >/dev/null 2>&1; do
attempt=$((attempt + 1))
if [ "$attempt" -ge 100 ]; then
echo "Xvfb did not become ready" >&2
exit 1
fi
sleep 0.05
done
openbox --sm-disable >/tmp/openbox.log 2>&1 &
OPENBOX_PID=$!
attempt=0
while :; do
wm_info=$(xprop -root _NET_SUPPORTING_WM_CHECK 2>/dev/null || true)
case "$wm_info" in
*"window id #"*) break ;;
esac
if ! kill -0 "$OPENBOX_PID" 2>/dev/null; then
echo "Openbox exited before becoming ready" >&2
exit 1
fi
attempt=$((attempt + 1))
if [ "$attempt" -ge 100 ]; then
echo "Openbox did not become ready" >&2
exit 1
fi
sleep 0.05
done
touch /tmp/agentbox-ready
while :; do
sleep 3600 &
wait $!
done