run.sh 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/bin/bash
  2. # Development runner - uses the virtual environment
  3. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  4. # Check if running as root/sudo - this causes EGL issues!
  5. if [ "$EUID" -eq 0 ]; then
  6. echo "❌ ERROR: Do NOT run this script with sudo!"
  7. echo ""
  8. echo " Running as root causes EGL/GPU permission issues."
  9. echo " Run as a regular user instead:"
  10. echo ""
  11. echo " ./run.sh --kiosk"
  12. echo ""
  13. echo " If you get permission errors, add your user to the video group:"
  14. echo " sudo usermod -a -G video \$USER"
  15. echo " newgrp video"
  16. echo ""
  17. exit 1
  18. fi
  19. # Check if virtual environment exists
  20. if [ ! -d "$SCRIPT_DIR/venv" ]; then
  21. echo "❌ Virtual environment not found!"
  22. echo " Run: sudo ./install.sh"
  23. echo " Or manually create: python3 -m venv venv && venv/bin/pip install -r requirements.txt"
  24. exit 1
  25. fi
  26. # Check if backend is running at localhost:8080
  27. echo "🔍 Checking backend availability at localhost:8080..."
  28. BACKEND_URL="http://localhost:8080"
  29. MAX_ATTEMPTS=30
  30. ATTEMPT=0
  31. while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
  32. if curl -s --connect-timeout 2 "$BACKEND_URL/serial_status" > /dev/null 2>&1; then
  33. echo "✅ Backend is available at localhost:8080"
  34. break
  35. else
  36. ATTEMPT=$((ATTEMPT + 1))
  37. if [ $ATTEMPT -eq 1 ]; then
  38. echo "⏳ Waiting for backend to become available..."
  39. echo " Make sure the main Dune Weaver application is running"
  40. echo " Attempting connection ($ATTEMPT/$MAX_ATTEMPTS)..."
  41. elif [ $((ATTEMPT % 5)) -eq 0 ]; then
  42. echo " Still waiting... ($ATTEMPT/$MAX_ATTEMPTS)"
  43. fi
  44. sleep 1
  45. fi
  46. done
  47. if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
  48. echo "❌ Backend not available after $MAX_ATTEMPTS attempts"
  49. echo " Please ensure the main Dune Weaver application is running at localhost:8080"
  50. echo " You can start it with: cd .. && python main.py"
  51. exit 1
  52. fi
  53. # Parse command line arguments
  54. KIOSK_FLAG=""
  55. if [ "$1" == "--kiosk" ] || [ "$1" == "-k" ]; then
  56. KIOSK_FLAG="--kiosk"
  57. fi
  58. # Run the application using the virtual environment
  59. echo ""
  60. if [ -n "$KIOSK_FLAG" ]; then
  61. echo "🚀 Starting Dune Weaver Touch (KIOSK MODE - fullscreen)"
  62. else
  63. echo "🚀 Starting Dune Weaver Touch (development mode - windowed)"
  64. echo " 💡 Use './run.sh --kiosk' for fullscreen mode"
  65. fi
  66. echo " Using virtual environment: $SCRIPT_DIR/venv"
  67. echo " Connected to backend: $BACKEND_URL"
  68. echo " Press Ctrl+C to stop"
  69. echo ""
  70. cd "$SCRIPT_DIR"
  71. exec ./venv/bin/python main.py $KIOSK_FLAG