diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-25 20:27:53 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-25 20:27:53 -0500 |
| commit | d06dd9bf82040ad67a6f12fb92fb411770d63f28 (patch) | |
| tree | 1bff8d00aea8a9b4a9eda3939c3187ee6935777d /src | |
| parent | 5a506edb574455ef111d48177497279394e18282 (diff) | |
Detect native-Linux Stardew Valley, default executables to no-Proton
Add IPluginGame::isNativeLinux() (virtual, default false) so a plugin
can advertise that the discovered installation is a native Linux build.
Bound through the Python plugin trampoline so basic_games subclasses can
override it.
Stardew Valley plugin: when the install dir contains the StardewValley
launcher script and no Stardew Valley.exe, report isNativeLinux=true and
return Linux-side binary names (StardewValley, StardewModdingAPI). Also
fix GameDataPath to "Mods" — Linux ships the SMAPI mods dir with a
capital M.
ExecutablesList::getPluginExecutables: skip the UseProton flag when the
plugin reports native Linux, so the spawn path falls into launchDirect()
and the game runs without a Wine prefix.
Diffstat (limited to 'src')
| -rw-r--r-- | src/src/executableslist.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/src/executableslist.cpp b/src/src/executableslist.cpp index f12a74c..459d25c 100644 --- a/src/src/executableslist.cpp +++ b/src/src/executableslist.cpp @@ -150,12 +150,21 @@ ExecutablesList::getPluginExecutables(MOBase::IPluginGame const* game) const std::vector<Executable> v;
+ // Native Linux installs (e.g. native Stardew Valley) launch directly without
+ // Proton. Their executables default to UseProton=false so the user doesn't
+ // have to flip every entry by hand after instance creation.
+ const bool nativeLinux = game->isNativeLinux();
+
for (const ExecutableInfo& info : game->executables()) {
if (!info.isValid()) {
continue;
}
- v.push_back({info, Executable::UseApplicationIcon | Executable::UseProton});
+ Executable::Flags flags = Executable::UseApplicationIcon;
+ if (!nativeLinux) {
+ flags |= Executable::UseProton;
+ }
+ v.push_back({info, flags});
}
const QFileInfo eppBin(QCoreApplication::applicationDirPath() +
|
