You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/launcher/cross-platform.md
+10-14Lines changed: 10 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,20 +15,6 @@ The choice is in `StrideVersionViewModel.GetExecutableNames` and `MainViewModel.
15
15
16
16
Searching for `OperatingSystem.IsWindows()` in the launcher shows the remaining divergences.
17
17
18
-
### Registry-backed one-shot tasks
19
-
20
-
`MainViewModel.HasDoneTask` / `SaveTaskAsDone` use `HKCU\SOFTWARE\Stride\` to remember whether a one-off action has run (`PrerequisitesRun`, announcement dismissal). On Linux/macOS:
21
-
22
-
-`HasDoneTask` returns `true` unconditionally, so the one-off tasks never fire a second time — but they never fire a first time either.
23
-
-`SaveTaskAsDone` is a no-op.
24
-
25
-
Consequences:
26
-
27
-
- The prerequisites installer is never auto-launched on Linux — which is fine, it's a Windows-only redistributable bundle.
28
-
- Announcements gated by `AnnouncementViewModel` are skipped.
29
-
30
-
There is a `FIXME xplat-editor` marker for a file-based implementation.
31
-
32
18
### Prerequisites installer
33
19
34
20
`StrideStoreVersionViewModel.RunPrerequisitesInstaller` runs `{InstallPath}/Bin/Prerequisites/install-prerequisites.exe`. That binary is a Windows installer — it is simply skipped on non-Windows since the DirectX / .NET prerequisites it ships don't apply.
@@ -65,6 +51,16 @@ The launcher writes `LauncherSettings.conf` and the `launcher.lock` single-insta
65
51
66
52
Window icons (`Launcher.ico`) are served through Avalonia's resource system. The `.ico` format is used on every platform; Avalonia picks the best-matching size at runtime.
67
53
54
+
## Recent-project "Show in Explorer"
55
+
56
+
`RecentProjectViewModel.Explore` reveals the selected recent project in the platform's native file manager:
57
+
58
+
-**Windows:**`explorer.exe /select,{path}` (unchanged from master).
59
+
-**macOS:**`open -R {path}` — reveals the file in Finder.
60
+
-**Linux:**`dbus-send` invocation of `org.freedesktop.FileManager1.ShowItems` on the session bus (implemented by GNOME Nautilus, KDE Dolphin, Cinnamon Nemo, XFCE Thunar, LXDE PCManFM, and others). Falls back to `xdg-open {parent-dir}` when the DBus call fails — e.g. on minimal WMs without an `org.freedesktop.FileManager1` implementer, or headless environments without a session bus.
61
+
62
+
All failures are swallowed silently (no dialog, no crash) since they are not actionable from inside the launcher.
63
+
68
64
## Testing surface
69
65
70
66
When exercising changes, run the launcher on both Windows and Linux. Known gaps that will not reproduce on Linux:
Copy file name to clipboardExpand all lines: docs/launcher/port-status.md
+2-3Lines changed: 2 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,6 @@ The core is in place:
25
25
26
26
Documented there, recapped for completeness:
27
27
28
-
-`MainViewModel.HasDoneTask` / `SaveTaskAsDone` use `HKCU\SOFTWARE\Stride\`; on Linux/macOS both are no-ops with a `FIXME xplat-editor` marker. Consequence: announcement dismissal state and `PrerequisitesRun` flag do not persist outside Windows.
29
28
- Prerequisites installer (`install-prerequisites.exe`) and Advanced Installer bundles are Windows-only by construction.
30
29
31
30
## Silent regressions (not flagged)
@@ -115,8 +114,8 @@ These change observable behaviour on both Windows and Linux and should ship firs
115
114
1.~~**Wire `WindowHandle` on Avalonia `MainWindow`.**~~**Done** (2026-04-22): HWND captured in `MainWindow.OnOpened` on Windows via `TryGetPlatformHandle()`; stays `IntPtr.Zero` on Linux until xplat-GameStudio lands. See [cross-platform.md](cross-platform.md) § Launcher ↔ GameStudio IPC.
116
115
2.~~**Restore `MainWindow.OnClosing`.**~~**Done** (2026-04-22): confirmation dialog with `Close anyway` / `Keep launcher open` buttons shown when any version `IsProcessing`; `LauncherSettings.ActiveVersion` persisted on close via `MainViewModel.TryCloseAsync`.
117
116
3.~~**Persist `LauncherSettings.CurrentTab` on tab change.**~~**Done** (2026-04-22): `MainViewModel.CurrentTab` persisted-on-set, two-way bound from the `TabControl`.
118
-
4.**Port `HasDoneTask` / `SaveTaskAsDone` to a file under `EditorPath.UserDataPath`.** Replace `HKCU\SOFTWARE\Stride` with something like a JSON `one-shot-tasks.json`. Removes the current "announcement never displays on Linux" and "prerequisites installer never auto-runs" gaps in one shot.
119
-
5.**Fix `explorer.exe` hard-coding** in `RecentProjectViewModel.Explore` — platform switch on `OperatingSystem.IsWindows()` / `IsMacOS()` / `IsLinux()`.
117
+
4.~~**Port `HasDoneTask` / `SaveTaskAsDone` to a file under `EditorPath.UserDataPath`.**~~**Done** (2026-04-22): one-shot task state moved into `Internal/Launcher/CompletedTasks` inside the existing `LauncherSettings.conf`. No migration — pre-existing `HKCU\SOFTWARE\Stride\` keys on Windows become harmless orphans.
118
+
5.~~**Fix `explorer.exe` hard-coding** in `RecentProjectViewModel.Explore`.~~**Done** (2026-04-22): platform switch — Windows `explorer.exe /select`, macOS `open -R`, Linux DBus `FileManager1.ShowItems` with `xdg-open` fallback. See [cross-platform.md](cross-platform.md) § Recent-project "Show in Explorer".
0 commit comments