Files
SunshineDisplaySwitch/README.md
T

2.4 KiB

SunshineDisplaySwitch

Löst ein Problem beim Game-Streaming mit Sunshine + Moonlight: Der physische PC-Monitor soll während des Streams deaktiviert sein und danach zuverlässig wieder aktiviert werden.

Hintergrund

Sunshine läuft als Windows-Dienst (Session 0 / SYSTEM-Kontext). DisplaySwitch.exe /internal hat aus diesem Kontext zwar keinen Fehler geworfen, aber keinen Effekt gehabt — das Reaktivieren eines deaktivierten Monitors erfordert die interaktive Benutzersession. Die Lösung nutzt den Task Scheduler mit InteractiveToken, um den Befehl garantiert in der richtigen Session auszuführen.

Dateien

Datei Zweck
register_task.bat Einmalige Einrichtung — registriert den Scheduled Task
idd_an.bat Sunshine Preparation Command — schaltet auf virtuellen Monitor um
idd_aus.bat Sunshine Teardown Command — reaktiviert den physischen Monitor

Einrichtung

1. Task registrieren (einmalig)

register_task.bat per Doppelklick ausführen und den UAC-Dialog bestätigen. Der Task MoonlightTeardown wird in der Windows-Aufgabenplanung registriert.

Zur Kontrolle:

schtasks /query /tn MoonlightTeardown /fo list /v

Unter Trigger sollten zwei Einträge erscheinen: At log on (Fallback nach Shutdown) und der Task ist zusätzlich jederzeit manuell aufrufbar — beide Mechanismen nutzen dieselbe Aktion.

2. Sunshine konfigurieren

In der Sunshine Web-UI unter Configuration > General:

Feld Wert
Command Preparations — Do Pfad zu idd_an.bat
Command Preparations — Undo Pfad zu idd_aus.bat

Funktionsweise

Stream startet
  └─> idd_an.bat
        └─> DisplaySwitch.exe /external   (virtuellen Monitor aktivieren)

Stream endet (normal)
  └─> idd_aus.bat  [läuft in Session 0]
        └─> Start-ScheduledTask 'MoonlightTeardown'
              └─> Task Scheduler  [InteractiveToken = Benutzersession]
                    └─> DisplaySwitch.exe /internal   (physischen Monitor reaktivieren)

Stream endet durch Shutdown (Fallback)
  └─> PC bootet neu → User-Login
        └─> MoonlightTeardown  [Logon-Trigger]
              └─> DisplaySwitch.exe /internal   (physischen Monitor reaktivieren)

Voraussetzungen

  • Windows 10/11
  • Sunshine als Streaming-Server
  • Kein zusätzliches Tool erforderlich — nur Windows-Bordmittel