sunshine-entrypoint.sh 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/bash
  2. set -euo pipefail
  3. echo "=============================================================="
  4. echo " Sunshine Gaming Desktop"
  5. echo "=============================================================="
  6. echo
  7. echo "Starting existing desktop stack..."
  8. # On conserve temporairement tout le mécanisme Selkies existant :
  9. # Xorg NVIDIA, XFCE, PipeWire, WirePlumber, D-Bus, etc.
  10. /usr/bin/supervisord -c /etc/supervisord.conf &
  11. SUPERVISOR_PID=$!
  12. cleanup() {
  13. echo "Stopping supervisor..."
  14. kill "${SUPERVISOR_PID}" 2>/dev/null || true
  15. wait "${SUPERVISOR_PID}" 2>/dev/null || true
  16. }
  17. trap cleanup EXIT TERM INT
  18. echo
  19. echo "Waiting for Xorg on ${DISPLAY}..."
  20. for i in $(seq 1 60); do
  21. if xdpyinfo -display "${DISPLAY}" >/dev/null 2>&1; then
  22. echo "Xorg is ready."
  23. break
  24. fi
  25. if ! kill -0 "${SUPERVISOR_PID}" 2>/dev/null; then
  26. echo "ERROR: supervisord exited before Xorg became available."
  27. exit 1
  28. fi
  29. if [ "${i}" -eq 60 ]; then
  30. echo "ERROR: Xorg did not become ready."
  31. exit 1
  32. fi
  33. sleep 1
  34. done
  35. echo
  36. echo "GPU:"
  37. nvidia-smi --query-gpu=name,driver_version --format=csv,noheader || true
  38. echo
  39. echo "Display:"
  40. xdpyinfo -display "${DISPLAY}" \
  41. | grep -E 'dimensions:|resolution:' \
  42. || true
  43. mkdir -p "${HOME}/.config/sunshine"
  44. cat > "${HOME}/.config/sunshine/sunshine.conf" <<'EOF'
  45. system_tray = disabled
  46. capture = nvfbc
  47. encoder = nvenc
  48. EOF
  49. echo "Sunshine configuration:"
  50. cat "${HOME}/.config/sunshine/sunshine.conf"
  51. echo
  52. echo "Starting Sunshine..."
  53. exec /usr/bin/sunshine