aboutsummaryrefslogtreecommitdiff
path: root/docker/scripts/sim-vnc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'docker/scripts/sim-vnc.sh')
-rwxr-xr-xdocker/scripts/sim-vnc.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/docker/scripts/sim-vnc.sh b/docker/scripts/sim-vnc.sh
new file mode 100755
index 0000000..207db09
--- /dev/null
+++ b/docker/scripts/sim-vnc.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+# Author: cirakg & claude ai
+# Summary: Run the app in the simulator and show the simulator in your browser through noVNC.
+#
+# Usage: sim-vnc.sh DEVICE (the Makefile publishes port 6080 on 127.0.0.1 only)
+# View: http://127.0.0.1:6080/vnc.html, then "Connect".
+#
+# The VNC server listens only inside the container (localhost, no password);
+# the only way in is the noVNC web socket that the Makefile publishes on your
+# machine's 127.0.0.1. Stop with Ctrl-C.
+set -euo pipefail
+# shellcheck source=ciq-env.sh
+source "$(dirname "${BASH_SOURCE[0]}")/ciq-env.sh"
+
+readonly VNC_PORT=5900
+readonly NOVNC_PORT=6080
+
+device="${1:?usage: sim-vnc.sh DEVICE}"
+ciq_require_sdk
+ciq_require_key
+build-app.sh debug "${device}"
+
+ciq_start_display
+ciq_start_simulator
+x11vnc -display "${DISPLAY}" -localhost -nopw -forever -shared -quiet -rfbport "${VNC_PORT}" \
+ >/tmp/x11vnc.log 2>&1 &
+websockify --web /usr/share/novnc "${NOVNC_PORT}" "localhost:${VNC_PORT}" >/tmp/websockify.log 2>&1 &
+
+cat >&2 <<EOF
+
+ Simulator running with the app on ${device}.
+ Open http://127.0.0.1:${NOVNC_PORT}/vnc.html in your browser and press Connect.
+ The app's console output follows below. Press Ctrl-C to stop.
+
+EOF
+monkeydo "${BUILD_DIR}/debug/${device}.prg" "${device}"
+# monkeydo returns when the app exits; keep the simulator up until Ctrl-C.
+log "the app exited; the simulator stays up until you press Ctrl-C"
+wait