From 54dc5658c65a471858422bc502df6adedfc0895b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 17 Aug 2026 16:40:23 +0000 Subject: [PATCH] Wait for window manager readiness Co-authored-by: codegirl007 --- agentbox/environment/entrypoint.sh | 19 +++++++++++++++++++ agentbox/internal/phase1/run.go | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/agentbox/environment/entrypoint.sh b/agentbox/environment/entrypoint.sh index 1a89db3..8a75a42 100644 --- a/agentbox/environment/entrypoint.sh +++ b/agentbox/environment/entrypoint.sh @@ -36,6 +36,25 @@ 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 diff --git a/agentbox/internal/phase1/run.go b/agentbox/internal/phase1/run.go index e491f44..b072d5d 100644 --- a/agentbox/internal/phase1/run.go +++ b/agentbox/internal/phase1/run.go @@ -155,7 +155,7 @@ func Run(ctx context.Context) (runErr error) { var windowID string if err := r.waitFor(ctx, 10*time.Second, func() bool { output, searchErr := r.docker(ctx, "exec", r.containerName, "xdotool", - "search", "--onlyvisible", "--name", "Agentbox Mover") + "search", "--name", "Agentbox Mover") if searchErr != nil { return false }