|
|
@@ -0,0 +1,61 @@
|
|
|
+#!/bin/bash
|
|
|
+set -euo pipefail
|
|
|
+
|
|
|
+echo "=============================================================="
|
|
|
+echo " Sunshine Gaming Desktop"
|
|
|
+echo "=============================================================="
|
|
|
+
|
|
|
+echo
|
|
|
+echo "Starting existing desktop stack..."
|
|
|
+
|
|
|
+# On conserve temporairement tout le mécanisme Selkies existant :
|
|
|
+# Xorg NVIDIA, XFCE, PipeWire, WirePlumber, D-Bus, etc.
|
|
|
+/usr/bin/supervisord -c /etc/supervisord.conf &
|
|
|
+
|
|
|
+SUPERVISOR_PID=$!
|
|
|
+
|
|
|
+cleanup() {
|
|
|
+ echo "Stopping supervisor..."
|
|
|
+ kill "${SUPERVISOR_PID}" 2>/dev/null || true
|
|
|
+ wait "${SUPERVISOR_PID}" 2>/dev/null || true
|
|
|
+}
|
|
|
+
|
|
|
+trap cleanup EXIT TERM INT
|
|
|
+
|
|
|
+echo
|
|
|
+echo "Waiting for Xorg on ${DISPLAY}..."
|
|
|
+
|
|
|
+for i in $(seq 1 60); do
|
|
|
+ if xdpyinfo -display "${DISPLAY}" >/dev/null 2>&1; then
|
|
|
+ echo "Xorg is ready."
|
|
|
+ break
|
|
|
+ fi
|
|
|
+
|
|
|
+ if ! kill -0 "${SUPERVISOR_PID}" 2>/dev/null; then
|
|
|
+ echo "ERROR: supervisord exited before Xorg became available."
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ "${i}" -eq 60 ]; then
|
|
|
+ echo "ERROR: Xorg did not become ready."
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ sleep 1
|
|
|
+done
|
|
|
+
|
|
|
+echo
|
|
|
+echo "GPU:"
|
|
|
+nvidia-smi --query-gpu=name,driver_version --format=csv,noheader || true
|
|
|
+
|
|
|
+echo
|
|
|
+echo "Display:"
|
|
|
+xdpyinfo -display "${DISPLAY}" \
|
|
|
+ | grep -E 'dimensions:|resolution:' \
|
|
|
+ || true
|
|
|
+
|
|
|
+echo
|
|
|
+echo "Starting Sunshine..."
|
|
|
+echo
|
|
|
+
|
|
|
+exec /usr/bin/sunshine
|