From d06dd9bf82040ad67a6f12fb92fb411770d63f28 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Sat, 25 Apr 2026 20:27:53 -0500 Subject: Detect native-Linux Stardew Valley, default executables to no-Proton MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- libs/uibase/include/uibase/iplugingame.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libs/uibase/include') diff --git a/libs/uibase/include/uibase/iplugingame.h b/libs/uibase/include/uibase/iplugingame.h index 0fa2508..93ee09f 100644 --- a/libs/uibase/include/uibase/iplugingame.h +++ b/libs/uibase/include/uibase/iplugingame.h @@ -142,6 +142,15 @@ public: */ virtual bool isInstalled() const = 0; + /** + * this function may be called before init() + * + * @return true if the discovered installation is a native Linux build that + * should be launched directly without Proton/Wine. Default false: + * Linux ports of MO2 historically run every game under Proton. + */ + virtual bool isNativeLinux() const { return false; } + /** * this function may be called before init() * -- cgit v1.3.1