From 3bb9b8c7e530287151f1d1e3c879cce781c4c3af Mon Sep 17 00:00:00 2001 From: Andre <200930841+Andre-Bzk@users.noreply.github.com> Date: Sun, 26 Apr 2026 10:56:08 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Logon-Trigger=20f=C3=BCr=20MoonlightTea?= =?UTF-8?q?rdown=20als=20Fallback=20nach=20Shutdown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++++++-- register_task.bat | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 22d7563..089e3c5 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,11 @@ Sunshine läuft als Windows-Dienst (Session 0 / SYSTEM-Kontext). `DisplaySwitch. Zur Kontrolle: ``` -schtasks /query /tn MoonlightTeardown /fo list +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**: @@ -41,11 +43,16 @@ Stream startet └─> idd_an.bat └─> DisplaySwitch.exe /external (virtuellen Monitor aktivieren) -Stream endet +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 diff --git a/register_task.bat b/register_task.bat index 4f00d63..faa09d6 100644 --- a/register_task.bat +++ b/register_task.bat @@ -9,7 +9,7 @@ if %errorLevel% neq 0 ( REM Angemeldeten Benutzer ermitteln (nicht SYSTEM) for /f "tokens=*" %%u in ('powershell -NoProfile -Command "(Get-WMIObject Win32_ComputerSystem).Username"') do set CURRENT_USER=%%u -powershell.exe -ExecutionPolicy Bypass -NonInteractive -Command "$action = New-ScheduledTaskAction -Execute 'DisplaySwitch.exe' -Argument '/internal'; $principal = New-ScheduledTaskPrincipal -UserId '%CURRENT_USER%' -LogonType Interactive -RunLevel Highest; $settings = New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew -ExecutionTimeLimit (New-TimeSpan -Minutes 1); Register-ScheduledTask -TaskName 'MoonlightTeardown' -Action $action -Principal $principal -Settings $settings -Force; Write-Host 'Task MoonlightTeardown erfolgreich registriert.'" +powershell.exe -ExecutionPolicy Bypass -NonInteractive -Command "$action = New-ScheduledTaskAction -Execute 'DisplaySwitch.exe' -Argument '/internal'; $principal = New-ScheduledTaskPrincipal -UserId '%CURRENT_USER%' -LogonType Interactive -RunLevel Highest; $settings = New-ScheduledTaskSettingsSet -MultipleInstances IgnoreNew -ExecutionTimeLimit (New-TimeSpan -Minutes 1); $trigger = New-ScheduledTaskTrigger -AtLogOn -User '%CURRENT_USER%'; Register-ScheduledTask -TaskName 'MoonlightTeardown' -Action $action -Principal $principal -Settings $settings -Trigger $trigger -Force; Write-Host 'Task MoonlightTeardown erfolgreich registriert.'" echo. echo Fertig. Dieses Fenster kann geschlossen werden.