Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.en-US.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ English (US) release notes, mirroring CHANGELOG.md (Brazilian Portuguese). Befor
## [Unreleased]
### What's new
- Update notice in Portuguese: the new version's highlight shows in the app's language when there is a changelog in it (today, Portuguese); other languages still see it in English. Applies to updates published after this version. (#158)
- **Custom app** mode: in Settings → When entering console mode, pick any `.exe` (RetroArch, another launcher…) with optional arguments. Console Mode sets up the TV, opens the app on the game screen and restores the desk by itself when it closes. For launchers that only start another program and exit, type the real program's process name in **Process to watch**. If it never shows up, the session stays until you end it (hold Start + Select). (#161)
- Diagnostics in Settings: a new card shows, read-only, the app's version and channel, Windows, the screens (resolution, HDR, which one is the game screen and which ones get hidden), the audio outputs, the connected controllers, whether Steam, Playnite, RTSS and ControlFS were found, and the end of the log. **Copy report** copies it all as text to paste into an issue, without your user name in paths and without keys. (#159)

## [1.6.2]
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Notas em português do Brasil; a versão em inglês (Estados Unidos) fica em `CH
## [Unreleased]
### Novidades
- Aviso de atualização em português: o destaque da nova versão aparece no idioma do app quando há um changelog nele (hoje, português); os outros idiomas continuam vendo o destaque em inglês. Vale a partir das atualizações publicadas depois desta versão. (#158)
- Modo **Aplicativo personalizado**: em Ajustes → Ao entrar no modo console, escolha qualquer `.exe` (RetroArch, outro launcher…) com argumentos opcionais. O Console Mode prepara a TV, abre o app na tela de jogo e restaura a mesa sozinho quando ele fecha. Para launchers que só abrem outro programa e fecham, informe em **Processo a acompanhar** o nome do processo do programa de verdade. Se ele nunca aparecer, a sessão continua até você encerrá-la (segurar Start + Select). (#161)
- Diagnóstico em Ajustes: um card novo mostra, só para leitura, a versão e o canal do app, o Windows, as telas (resolução, HDR, qual é a de jogo e quais são ocultadas), as saídas de áudio, os controles conectados, se Steam, Playnite, RTSS e ControlFS foram encontrados e o fim do log. **Copiar relatório** copia tudo em texto para colar numa issue, sem o seu nome de usuário nos caminhos e sem chaves. (#159)

## [1.6.2]
Expand Down
1 change: 1 addition & 0 deletions docs/GUIDE.de-DE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Details, die nicht ins [README](../README.de-DE.md) passen.
| **Steam Big Picture** | Automatische Wiederherstellung (die App bleibt im Infobereich) |
| **Playnite (Vollbild)** | Automatische Wiederherstellung (die App bleibt im Infobereich) |
| **Xbox-Modus** | Manuell: Verwende *Jetzt wiederherstellen*, das Menü im Infobereich oder öffne das Fenster erneut |
| **Eigene App** | Automatische Wiederherstellung, wenn die App (oder der gewählte überwachte Prozess) geschlossen wird |

Du kannst auch jederzeit über den Infobereich wiederherstellen (*Konfiguration wiederherstellen* / *Fenster anzeigen*). Bei schwarzen Bildschirmen blendest du die Abdeckungen mit **ESC** aus.

Expand Down
1 change: 1 addition & 0 deletions docs/GUIDE.es-ES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Detalles que no caben en el [README](../README.es-ES.md).
| **Steam Big Picture** | Restauración automática (la aplicación sigue en la bandeja) |
| **Playnite a pantalla completa** | Restauración automática (la aplicación sigue en la bandeja) |
| **Modo Xbox** | Manual: usa *Restaurar ahora*, el menú de la bandeja o vuelve a abrir la ventana |
| **Aplicación personalizada** | Restauración automática cuando se cierra la aplicación (o el proceso que elegiste vigilar) |

También puedes restaurar en cualquier momento desde la bandeja (*Restaurar pantallas* / *Mostrar ventana*). Con las pantallas negras, **ESC** quita las cortinas.

Expand Down
1 change: 1 addition & 0 deletions docs/GUIDE.fr-FR.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Les détails qui ne tiennent pas dans le [README](../README.fr-FR.md).
| **Steam Big Picture** | Restauration automatique (l'application reste dans la zone de notification) |
| **Playnite en plein écran** | Restauration automatique (l'application reste dans la zone de notification) |
| **Mode Xbox** | Manuelle : utilisez *Restaurer maintenant*, le menu de la zone de notification, ou rouvrez la fenêtre |
| **Application personnalisée** | Restauration automatique quand l'application (ou le processus choisi à surveiller) se ferme |

Vous pouvez aussi restaurer à tout moment depuis la zone de notification (*Restaurer la configuration* / *Afficher la fenêtre*). Avec les écrans noirs, **Échap** retire les rideaux.

Expand Down
3 changes: 3 additions & 0 deletions docs/GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ English · [Português (Brasil)](GUIDE.pt-BR.md) · [Español](GUIDE.es-ES.md)
| **Steam Big Picture** | Automatic restore (app stays in the tray) |
| **Playnite fullscreen** | Automatic restore (app stays in the tray) |
| **Xbox mode** | Manual — use *Restore now*, the tray menu, or reopen the window |
| **Custom app** | Automatic restore when the app (or the process you chose to watch) closes |

**Custom app** opens any `.exe` you pick (RetroArch, another launcher…) from its own folder, with optional arguments, and moves its window to the game screen. The session ends a few seconds after that process closes. If the exe only starts another program and exits (a launcher stub), type the real program's process name in **Process to watch**. If the watched process never shows up, the session stays until you end it (hold Start + Select, the session menu or the tray).

You can also restore anytime from the tray (*Restore setup* / *Show window*). With black overlays, **ESC** dismisses the curtains.

Expand Down
3 changes: 3 additions & 0 deletions docs/GUIDE.pt-BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ Detalhes que não cabem no [README](../README.pt-BR.md).
| **Steam Big Picture** | Restauração automática (app na bandeja) |
| **Playnite tela cheia** | Restauração automática (app na bandeja) |
| **Modo Xbox** | Manual — *Restaurar agora*, menu da bandeja ou reabrir a janela |
| **Aplicativo personalizado** | Restauração automática quando o app (ou o processo escolhido para acompanhar) fecha |

**Aplicativo personalizado** abre qualquer `.exe` que você escolher (RetroArch, outro launcher…) a partir da própria pasta, com argumentos opcionais, e move a janela dele para a tela de jogo. A sessão termina alguns segundos depois que esse processo fecha. Se o exe só abre outro programa e fecha (um launcher intermediário), digite o nome do processo do programa de verdade em **Processo a acompanhar**. Se o processo acompanhado nunca aparecer, a sessão continua até você encerrá-la (segurar Start + Select, o menu da sessão ou a bandeja).

Também dá para restaurar a qualquer momento pela bandeja (*Restaurar setup* / *Mostrar janela*). Com cortinas pretas, **ESC** remove o overlay.

Expand Down
1 change: 1 addition & 0 deletions docs/GUIDE.ru-RU.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
| **Steam Big Picture** | Автоматическое восстановление (приложение остаётся в области уведомлений) |
| **Playnite в полноэкранном режиме** | Автоматическое восстановление (приложение остаётся в области уведомлений) |
| **Режим Xbox** | Вручную: нажмите *«Восстановить сейчас»*, используйте меню в области уведомлений или снова откройте окно |
| **Своё приложение** | Автоматическое восстановление, когда приложение (или выбранный отслеживаемый процесс) закрывается |

Восстановить конфигурацию можно в любой момент из области уведомлений (*«Восстановить конфигурацию»* / *«Показать окно»*). Если экраны закрыты чёрным экраном, **ESC** убирает затемнение.

Expand Down
10 changes: 10 additions & 0 deletions docs/TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,16 @@ Pré-condições: 1.6 instalada por cima da 1.5, com a configuração da 1.5 (te
- [ ] "Cortinas pretas": as telas da mesa ficam pretas e voltam ao restaurar. Resultado: ______
- [ ] "Desligar por DDC/CI" (monitor com DDC/CI ligado no menu dele): as telas da mesa apagam e voltam a acender ao restaurar. Resultado: ______

### Aplicativo personalizado

- [ ] RetroArch: em Ajustes → Ao entrar no modo console, escolher "Aplicativo personalizado", Procurar… e selecionar `retroarch.exe` (argumentos vazios). Iniciar: as telas trocam como nos outros modos, o RetroArch abre na TV e na frente. O resumo e a tela da sessão mostram "RetroArch". Resultado: ______
- [ ] Argumentos: com `--fullscreen` (ou o argumento equivalente do app), o app abre em tela cheia; a pasta de trabalho é a do exe (o RetroArch acha os cores e a configuração). Resultado: ______
- [ ] Fechar o app escolhido restaura a mesa sozinho em poucos segundos (log: `Loop: processo … fechou`). Resultado: ______
- [ ] Launcher intermediário que abre outro processo e fecha (ex.: um atalho/launcher de jogo): com o nome do processo real em "Processo a acompanhar", a sessão continua depois que o launcher fecha e só restaura quando o processo real fecha. Resultado: ______
- [ ] "Processo a acompanhar" com um nome que nunca aparece: depois de ~90 s o log mostra `não apareceu`, a mesa **não** volta sozinha, e segurar Start + Select (ou o menu da bandeja) restaura. Resultado: ______
- [ ] Caminho inválido (exe apagado ou renomeado depois de escolhido) ou nenhum app escolhido: Iniciar mostra o aviso e nada muda nas telas. Resultado: ______
- [ ] Na interface Console, a linha "Aplicativo a abrir" aparece só com esse modo escolhido e abre o seletor de arquivos. Resultado: ______

### Janelas e recuperação

- [ ] Big Picture ou Playnite abrindo na tela errada é movido para a TV. Resultado: ______
Expand Down
10 changes: 10 additions & 0 deletions src/ConsoleMode/Models/Models.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ public sealed class AppConfig

/// <summary>Playnite folder or exe chosen by the user (portable installs); empty = auto-detect.</summary>
public string PlaynitePath { get; set; } = "";

/// <summary>"customApp" mode: the exe to launch, its optional arguments, and an optional process to
/// watch instead of it (for launcher stubs that hand off to another process).</summary>
public string CustomAppPath { get; set; } = "";
public string CustomAppArguments { get; set; } = "";
public string CustomAppWatchProcess { get; set; } = "";
public string AudioDeviceId { get; set; } = "";
public string AudioDeviceName { get; set; } = "";
public bool AudioAutoSwitch { get; set; }
Expand Down Expand Up @@ -340,6 +346,10 @@ public sealed class ConsoleRuntimeState
public bool AudioPendingTarget { get; set; }
public nint CachedBigPictureHandle { get; set; }
public DateTime? PlayniteWindowMissingSince { get; set; }
/// <summary>"customApp": the process name that keeps the session going, and when it went missing.</summary>
public string CustomAppWatchName { get; set; } = "";
public DateTime? CustomAppGoneSince { get; set; }
public bool CustomAppTimeoutLogged { get; set; }
public nint CachedXboxHandle { get; set; }
public bool BigPictureWatchActive { get; set; }
public bool AudioWatchComplete { get; set; }
Expand Down
12 changes: 12 additions & 0 deletions src/ConsoleMode/Resources/Strings.de-DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,17 @@
"PlaynitePathInvalid": "Playnite.FullscreenApp.exe wurde unter {0} nicht gefunden.",
"PlaynitePathPickError": "Dateiauswahl konnte nicht geöffnet werden: {0}",
"LaunchXbox": "Xbox-Modus (experimentell)",
"LaunchCustomApp": "Eigene App",
"LaunchCustomAppDescription": "Öffnet das Programm deiner Wahl (einen Emulator, einen anderen Launcher…). Deine Bildschirme werden automatisch wiederhergestellt, wenn du es schließt.",
"CustomAppPathCard": "Zu öffnende App",
"CustomAppBrowse": "Durchsuchen…",
"CustomAppArgumentsCard": "Argumente",
"CustomAppArgumentsDescription": "Optional. Werden der App beim Start übergeben, zum Beispiel um sie im Vollbild zu öffnen.",
"CustomAppWatchCard": "Zu überwachender Prozess",
"CustomAppWatchDescription": "Optional. Wenn die App nur ein anderes Programm startet und sich schließt, gib den Prozessnamen dieses Programms ein. Deine Bildschirme werden wiederhergestellt, wenn es geschlossen wird.",
"CustomAppMissing": "Wähle die App, die geöffnet werden soll (eine .exe-Datei).",
"CustomAppNotExe": "{0} ist keine .exe-Datei. Wähle die App, die geöffnet werden soll.",
"CustomAppNotFound": "{0} wurde nicht gefunden. Wähle die App erneut.",
"FpsOverlayCard": "FPS-Anzeige",
"FpsOverlayExternal": "Afterburner (unverändert lassen)",
"FpsOverlayOff": "Aus (alles ausblenden)",
Expand Down Expand Up @@ -337,6 +348,7 @@
"ActivePlaynite": "Schließe Playnite, um deine Bildschirme automatisch wiederherzustellen.",
"ActiveXbox": "Im Xbox-Modus erfolgt die Wiederherstellung manuell: Verwende „Jetzt wiederherstellen“ oder das Menü im Infobereich.",
"ActiveSteam": "Schließe Big Picture, um deine Bildschirme automatisch wiederherzustellen.",
"ActiveCustomApp": "Schließe {0}, um deine Bildschirme automatisch wiederherzustellen.",
"InstallKindInstalled": "Version {0} · installiert",
"InstallKindPortable": "Version {0} · portabel",
"Download": "Herunterladen",
Expand Down
12 changes: 12 additions & 0 deletions src/ConsoleMode/Resources/Strings.en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,17 @@
"PlaynitePathInvalid": "Could not find Playnite.FullscreenApp.exe at {0}.",
"PlaynitePathPickError": "Could not open the file picker: {0}",
"LaunchXbox": "Xbox mode (experimental)",
"LaunchCustomApp": "Custom app",
"LaunchCustomAppDescription": "Opens the program you choose (an emulator, another launcher…). Your displays are restored automatically when you close it.",
"CustomAppPathCard": "App to open",
"CustomAppBrowse": "Browse…",
"CustomAppArgumentsCard": "Arguments",
"CustomAppArgumentsDescription": "Optional. Passed to the app when it starts, for example to open it in fullscreen.",
"CustomAppWatchCard": "Process to watch",
"CustomAppWatchDescription": "Optional. When the app only starts another program and closes, type that program's process name. Your displays are restored when it closes.",
"CustomAppMissing": "Choose the app to open (an .exe file).",
"CustomAppNotExe": "{0} is not an .exe file. Choose the app to open.",
"CustomAppNotFound": "Could not find {0}. Choose the app again.",
"FpsOverlayCard": "FPS counter",
"FpsOverlayExternal": "Afterburner (leave as is)",
"FpsOverlayOff": "Off (hide everything)",
Expand Down Expand Up @@ -337,6 +348,7 @@
"ActivePlaynite": "Close Playnite to restore your displays automatically.",
"ActiveXbox": "In Xbox mode, restoration is manual: use Restore now or the system tray menu.",
"ActiveSteam": "Close Big Picture to restore your displays automatically.",
"ActiveCustomApp": "Close {0} to restore your displays automatically.",
"InstallKindInstalled": "Version {0} · installed",
"InstallKindPortable": "Version {0} · portable",
"Download": "Download",
Expand Down
12 changes: 12 additions & 0 deletions src/ConsoleMode/Resources/Strings.es-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,17 @@
"PlaynitePathInvalid": "No se encontró Playnite.FullscreenApp.exe en {0}.",
"PlaynitePathPickError": "No se pudo abrir el selector de archivos: {0}",
"LaunchXbox": "Modo Xbox (experimental)",
"LaunchCustomApp": "Aplicación personalizada",
"LaunchCustomAppDescription": "Abre el programa que elijas (un emulador, otro launcher…). Al cerrarlo, tus pantallas vuelven solas.",
"CustomAppPathCard": "Aplicación que abrir",
"CustomAppBrowse": "Examinar…",
"CustomAppArgumentsCard": "Argumentos",
"CustomAppArgumentsDescription": "Opcional. Se pasan a la aplicación al abrirla, por ejemplo para abrirla en pantalla completa.",
"CustomAppWatchCard": "Proceso que vigilar",
"CustomAppWatchDescription": "Opcional. Si la aplicación solo abre otro programa y se cierra, escribe el nombre del proceso de ese programa. Tus pantallas vuelven cuando se cierre.",
"CustomAppMissing": "Elige la aplicación que abrir (un archivo .exe).",
"CustomAppNotExe": "{0} no es un archivo .exe. Elige la aplicación que abrir.",
"CustomAppNotFound": "No se encontró {0}. Vuelve a elegir la aplicación.",
"FpsOverlayCard": "Contador de FPS",
"FpsOverlayExternal": "Afterburner (no tocar)",
"FpsOverlayOff": "Desactivado (oculta todo)",
Expand Down Expand Up @@ -337,6 +348,7 @@
"ActivePlaynite": "Cierra Playnite para que tus pantallas vuelvan solas.",
"ActiveXbox": "En modo Xbox la restauración es manual: usa Restaurar ahora o el menú de la bandeja.",
"ActiveSteam": "Cierra Big Picture para que tus pantallas vuelvan solas.",
"ActiveCustomApp": "Cierra {0} para que tus pantallas vuelvan solas.",
"InstallKindInstalled": "Versión {0} · instalada",
"InstallKindPortable": "Versión {0} · portátil",
"Download": "Descargar",
Expand Down
12 changes: 12 additions & 0 deletions src/ConsoleMode/Resources/Strings.fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,17 @@
"PlaynitePathInvalid": "Playnite.FullscreenApp.exe introuvable dans {0}.",
"PlaynitePathPickError": "Impossible d'ouvrir le sélecteur de fichiers : {0}",
"LaunchXbox": "Mode Xbox (expérimental)",
"LaunchCustomApp": "Application personnalisée",
"LaunchCustomAppDescription": "Ouvre le programme de votre choix (un émulateur, un autre launcher…). Vos écrans sont restaurés automatiquement quand vous le fermez.",
"CustomAppPathCard": "Application à ouvrir",
"CustomAppBrowse": "Parcourir…",
"CustomAppArgumentsCard": "Arguments de lancement",
"CustomAppArgumentsDescription": "Facultatif. Transmis à l'application à son lancement, par exemple pour l'ouvrir en plein écran.",
"CustomAppWatchCard": "Processus à surveiller",
"CustomAppWatchDescription": "Facultatif. Si l'application ne fait que lancer un autre programme puis se ferme, saisissez le nom du processus de ce programme. Vos écrans sont restaurés quand il se ferme.",
"CustomAppMissing": "Choisissez l'application à ouvrir (un fichier .exe).",
"CustomAppNotExe": "{0} n'est pas un fichier .exe. Choisissez l'application à ouvrir.",
"CustomAppNotFound": "{0} est introuvable. Choisissez à nouveau l'application.",
"FpsOverlayCard": "Compteur de FPS",
"FpsOverlayExternal": "Afterburner (ne pas toucher)",
"FpsOverlayOff": "Désactivé (tout masquer)",
Expand Down Expand Up @@ -337,6 +348,7 @@
"ActivePlaynite": "Fermez Playnite pour restaurer automatiquement vos écrans.",
"ActiveXbox": "En mode Xbox, la restauration est manuelle : utilisez Restaurer maintenant ou le menu de la zone de notification.",
"ActiveSteam": "Fermez Big Picture pour restaurer automatiquement vos écrans.",
"ActiveCustomApp": "Fermez {0} pour restaurer automatiquement vos écrans.",
"InstallKindInstalled": "Version {0} · installée",
"InstallKindPortable": "Version {0} · portable",
"Download": "Télécharger",
Expand Down
Loading
Loading