Files
thunderheronightandClaude Opus 5.5 29b3acf5b9 Splat Workshop 0.1.0
Web interface, tray icon and recording check for turning Arcturus Vision
Camera recordings from the Steam Frame into Gaussian splats and copying
them into the Gaussian XR gallery.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:30:31 +02:00

49 lines
2.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Start Splat Workshop.
# splat-workshop tray icon + open the web interface (tray needs PySide6, or uv to fetch it)
# splat-workshop --background tray icon only (e.g. for autostart)
# splat-workshop --no-tray web server in the background + open the web interface; stops itself when idle
# splat-workshop --server web server in the foreground (Ctrl+C to stop)
ROOT=$(cd "$(dirname "$(readlink -f "$0")")" && pwd)
cd "$ROOT" || exit 1
python3 -c 'import sys; sys.exit(sys.version_info < (3, 11))' || { echo "Splat Workshop needs Python 3.11 or newer" >&2; exit 1; }
PORT=$(python3 -c 'from splat_workshop import config; print(config.load().port)')
URL="http://127.0.0.1:$PORT/"
ours() { curl -fsS -m 2 "${URL}api/ping" 2>/dev/null | grep -q '"app": "splat-workshop"'; }
no_tray() {
if ! ours; then
if ss -ltnH "sport = :$PORT" 2>/dev/null | grep -q .; then
msg="Port $PORT is used by another program (change [server] port in the config)."
notify-send -a "Splat Workshop" -i dialog-error "Splat Workshop" "$msg" 2>/dev/null || echo "$msg" >&2
exit 1
fi
mkdir -p "${XDG_STATE_HOME:-$HOME/.local/state}/splat-workshop"
setsid python3 -m splat_workshop.server >>"${XDG_STATE_HOME:-$HOME/.local/state}/splat-workshop/server.log" 2>&1 < /dev/null &
for _ in $(seq 50); do ours && break; sleep 0.1; done
fi
xdg-open "$URL" >/dev/null 2>&1 &
}
case "${1:-}" in
--server) exec python3 -m splat_workshop.server ;;
--no-tray) no_tray; exit 0 ;;
esac
# Tray icon: system PySide6, otherwise let uv provide it (downloaded once, ~100 MB)
if python3 -c 'import PySide6' 2>/dev/null; then
python3 -m splat_workshop.tray "$@"
elif command -v uv >/dev/null; then
uv run --quiet --no-project --with 'PySide6-Essentials>=6.5' python -m splat_workshop.tray "$@"
else
false
fi
rc=$?
# 2 = no system tray available; other errors: fall back to the plain web interface
if [ $rc -ne 0 ]; then
[ $rc -ne 2 ] && echo "Tray icon not available – starting without it." >&2
no_tray
fi