#!/usr/bin/bash set -euo pipefail export DISPLAY=:1 function command_privilege() { if [ "$(id -u)" -eq 0 ]; then "$@" else sudo "$@" fi } # Docker socket echo "[entrypoint] Starting Docker daemon..." command_privilege dockerd > /dev/null 2>&1 & sleep 1 # Set default browser echo "[desktop-wrapper] Setting default browser to Firefox..." xdg-settings set default-web-browser firefox-esr.desktop # Xvfb echo "[desktop-wrapper] Starting Xvfb..." Xvfb :1 -screen 0 1920x920x24 & sleep 1 # Openbox echo "[desktop-wrapper] Starting Openbox..." openbox-session & sleep 1 # Set password for VNC if provided if [ -n "${VNC_PASSWORD:-}" ]; then echo "[desktop-wrapper] Setting VNC password..." mkdir -p /home/coder/.vnc x11vnc -storepasswd "$VNC_PASSWORD" /home/coder/.vnc/passwd VNC_AUTH="-rfbauth /home/coder/.vnc/passwd" else VNC_AUTH="-nopw" fi # x11vnc echo "[desktop-wrapper] Starting x11vnc..." x11vnc -display :1 $VNC_AUTH -forever -rfbport 5900 & sleep 1 # NoVNC echo "[desktop-wrapper] Starting noVNC..." websockify --web=/usr/share/novnc/ 0.0.0.0:8080 localhost:5900 & # Queue of processes to wait for wait -n