# 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](https://github.com/LizardByte/Sunshine) als Streaming-Server - Kein zusätzliches Tool erforderlich — nur Windows-Bordmittel