# Python 3.14 base & pip installation
FROM python:3.14 AS base

WORKDIR /app

RUN apt-get update && apt-get install -y \
    libgirepository1.0-dev \
    libcairo2-dev \
    pkg-config \
    python3-dev \
    gtk+3.0 \
    dbus-x11 \
    x11vnc \
    xvfb \
    fluxbox \
    net-tools \
    libappindicator3-dev \
    libayatana-appindicator3-dev \
    x11-utils

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# Create the final image
FROM base

WORKDIR /app

# Copy the rest of the project files
COPY . .

# Start Xvfb, Fluxbox, and x11vnc, then run the application
CMD rm -f /tmp/.X1-lock && \
    Xvfb :1 -screen 0 1280x720x16 & \
    fluxbox & \
    # Wait for the X server to be up
    while ! xdpyinfo -display :1 > /dev/null 2>&1; do \
        echo "Waiting for X server to be available..."; \
        sleep 1; \
    done && \
    echo "X server is running" || (echo "X server failed to start, exiting..." && exit 1); \
    # Start x11vnc with additional logging
    x11vnc -display :1 -nopw -listen 0.0.0.0 -forever -xkb -no6 -noxdamage -o /var/log/x11vnc.log & \
    # Explicitly set the DISPLAY variable for the Python application
    export DISPLAY=:1 && python main.py 2>&1 | tee /var/log/main.log
