#!/bin/bash
export DISPLAY=:99
export ANDROID_SDK_ROOT=/opt/android-sdk
export ANDROID_HOME=/opt/android-sdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:/opt/android-studio/bin
# Clean locks
rm -f /tmp/.X99-lock /tmp/.X11-unix/X99
echo "Starting Xvfb..."
Xvfb :99 -screen 0 1280x800x16 -ac &
sleep 3
echo "Starting Openbox..."
# Create a minimal menu file to avoid the warning
mkdir -p /var/lib/openbox
cat > /var/lib/openbox/debian-menu.xml << 'EOF'
EOF
openbox --replace &
sleep 2
echo "Starting Android Studio..."
/opt/android-studio/bin/studio.sh &
sleep 5
echo "Starting VNC..."
x11vnc -display :99 -nopw -forever -shared -rfbport 5900 -defer 10 -wait 10 -q &
sleep 3
# Create a simple landing page that redirects to vnc.html
cat > /usr/share/novnc/index.html << 'EOF'
Redirecting to Android Studio VNC
Redirecting to Android Studio VNC ...
EOF
# Create a custom vnc.html that works with HF Spaces
cat > /usr/share/novnc/vnc.html << 'EOF'
Android Studio on Hugging Face
Connecting to Android Studio...
EOF
# Create diagnostic page
cat > /usr/share/novnc/diagnostic.html << 'EOF'
HF Space Diagnostic
🔧 Diagnostic Tool
Test WebSocket
Go to VNC
EOF
echo "Starting noVNC with HF Spaces configuration..."
cd /usr/share/novnc
# Ensure vnc.js is available
if [ ! -f "vnc.js" ]; then
ln -sf /usr/share/novnc/vnc.js . 2>/dev/null || true
fi
# Start websockify
websockify --web=/usr/share/novnc 0.0.0.0:7860 localhost:5900