aboutsummaryrefslogtreecommitdiff
path: root/libs/basic_games/steam_utils.py
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-11 19:04:11 -0600
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-02-11 19:04:11 -0600
commit8a10147bbb1fe6589c4205bcfd26d6d696512ced (patch)
tree66fe7403114e2d63fa48ceee14352bee4dbddae0 /libs/basic_games/steam_utils.py
parenta03455028d8b79a1196bffc2f80c2455c41db065 (diff)
Add Root Builder plugin, Linux game detection, and OMOD installer fix
- New native Root Builder plugin (src/plugins/rootbuilder.py) with copy and symlink deploy modes, auto-deploy hooks, backup/restore, and third-party conflict detection that moves incompatible plugins to DisabledPlugins/. In link mode, .exe/.dll are always copied to avoid Wine/Proton path resolution issues with symlinked executables. - Fix basic_games detection on Linux: steam_utils now checks native Steam paths (~/.local/share/Steam, Flatpak, Snap), epic_utils uses correct Linux Heroic config paths, gog_utils falls back to Heroic GOG installed.json when Windows registry is unavailable. - Fix OMOD installer crash: isArchiveSupported now handles both IFileTree (from mod list refresh) and string (from install check) arguments. - Add flatpak manifest step to copy source-tree Python plugins (src/plugins/*.py) into the build output. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'libs/basic_games/steam_utils.py')
-rw-r--r--libs/basic_games/steam_utils.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/libs/basic_games/steam_utils.py b/libs/basic_games/steam_utils.py
index d1d4a06..a3daeaf 100644
--- a/libs/basic_games/steam_utils.py
+++ b/libs/basic_games/steam_utils.py
@@ -148,7 +148,28 @@ def find_steam_path() -> Path | None:
value = winreg.QueryValueEx(key, "SteamExe")
return Path(value[0].replace("/", "\\")).parent
except FileNotFoundError:
- return None
+ pass
+
+ # Linux: check common Steam install locations.
+ for candidate in (
+ Path.home() / ".local" / "share" / "Steam",
+ Path.home() / ".steam" / "steam",
+ Path.home()
+ / ".var"
+ / "app"
+ / "com.valvesoftware.Steam"
+ / ".local"
+ / "share"
+ / "Steam",
+ Path.home() / "snap" / "steam" / "common" / ".local" / "share" / "Steam",
+ ):
+ if (
+ candidate.is_dir()
+ and candidate.joinpath("steamapps", "libraryfolders.vdf").exists()
+ ):
+ return candidate
+
+ return None
def find_games() -> dict[str, Path]: