Skip to content

Feature/app launcher - #49

Open
goldorakiller wants to merge 2 commits into
RetroBat-Official:mainfrom
goldorakiller:feature/app-launcher
Open

Feature/app launcher#49
goldorakiller wants to merge 2 commits into
RetroBat-Official:mainfrom
goldorakiller:feature/app-launcher

Conversation

@goldorakiller

Copy link
Copy Markdown

Add AppLauncher: launch companion apps in parallel with RetroBat

- Fix: propagate --external-launcher to the intro video, so it no longer
  forces focus back to EmulationStation when launched from an external
  frontend.
- Fix: align FocusDelay/VideoDelay fallback defaults with the values
  written to the default retrobat.ini (previously inconsistent).
- Fix: preserve original exception stack trace in IniFile's constructor
  (`throw ex;` -> `throw;`).
- Cleanup: remove RawInput.cs (dead code, never referenced) and the
  orphaned SharpDX packages.config entry (no longer referenced by the
  project).
- Cleanup: replace empty `catch { }` blocks with logged warnings across
  Program.cs, SplashVideo.cs and VideoPlayerForm.cs.
- Refactor: split the ~900-line Main() into focused, testable classes:
  StartupFileChecker, RetroBatConfigLoader, AutostartManager,
  DpiAwarenessManager, EmulationStationSettings and
  EmulationStationLauncher. Behavior is preserved, including edge cases
  (early return when EmulationStation fails to start still skips the
  final success log, same as before).
Adds a retrobat.ini option to launch one or more external programs
(.exe, .bat, .cmd...) alongside EmulationStation, useful for companion
tools such as DMD emulators, overlays, or other launcher utilities.

- New [RetroBat] key AppLauncher (and AppLauncher2, AppLauncher3, ...
  for additional apps). Empty by default, fully opt-in.
- Optional "-nowindow" suffix on the value to start the app without a
  visible window (uses CreateNoWindow, only effective when paired with
  UseShellExecute=false).
- Apps are launched fire-and-forget as early as possible in the startup
  sequence (right after retrobat.ini is loaded), so they run in
  parallel with the rest of RetroBat's startup instead of waiting for
  the splash video and EmulationStation to be ready.
- Missing files or launch failures are logged as warnings and never
  block RetroBat's own startup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant