Install Roots
Ludusavi manifest paths often use <base> for a game’s install folder, and <root> for the
install root itself (for Steam, the Steam folder, as in <root>/userdata/…). SaveVault stores
your install folders in config.toml as additional_roots. Steam is also discovered at scan
time, and Rescan & Add Roots (below) writes locked Steam and Steam Library rows
for it as well.
Auto-discovery
Section titled “Auto-discovery”On first launch SaveVault merges common paths. After installing a new launcher, run Settings → Game Scanning → Additional Install Roots → Rescan & Add Roots, or:
savevault-cli roots discover # read-only: what's found on this machinesavevault-cli roots rescan # merge, sort, dedupe, and savesavevault-cli roots rescan --dry-run # preview the merged list without writing config.tomlsavevault-cli roots list # each row is marked locked or editableRows that a rescan adds are locked: their type and path are read-only. Remove a locked row if it’s wrong, then rescan. A rescan also drops locked rows whose folder no longer exists, and re-sorts the list alphabetically by type with Other last. Rows you add by hand stay editable and are kept even if their folder is missing.
| Platform | Auto-discovery includes |
|---|---|
| All | Steam and each extra Steam library, plus any GOG Games folder next to a Steam library |
| Windows | Epic, GOG Galaxy, Origin, Ubisoft Connect, Prime Gaming, Battle.net, EA App, LaunchBox emulators, Microsoft Store (WindowsApps, including secondary drives), and C:\GOG Games |
| Linux | Heroic (including the Flatpak install), Lutris (including Flatpak), Legendary, and ~/GOG Games |
| macOS | Steam and ~/GOG Games only |
On Linux, Flatpak installs are found at their sandbox paths: Steam at
~/.var/app/com.valvesoftware.Steam/.steam/steam, Heroic at
~/.var/app/com.heroicgameslauncher.hgl/config/heroic, and Lutris at
~/.var/app/net.lutris.Lutris/config/lutris (with its data in .../data/lutris).
A candidate whose folder doesn’t exist is dropped during discovery, and a configured root whose path is unusable (missing, or a glob that matches nothing) is skipped at scan time with a warning in the log rather than failing the scan.
Manual roots
Section titled “Manual roots”Use Add Root to add a row by hand, on any platform; it starts as Other and stays editable. The Move up and Move down arrows on each row reorder the list, and Remove deletes the row. Every launcher kind in a row’s kind dropdown can be chosen manually (Steam, Steam Library, GOG Library, GOG Galaxy, Epic, Heroic, Lutris, Legendary, Origin, EA App, Ubisoft Connect, Prime Gaming, Battle.net, Microsoft Store, LaunchBox), not just the Ludusavi-style kinds below:
| Kind | Purpose |
|---|---|
home |
Alternate HOME; <base> = {root}/{installDir} |
wine_prefix |
Wine/Proton prefix; expands drive_c user paths |
windows_drive / linux_drive / mac_drive |
External OS disk |
other |
Child-folder layout (each subfolder is a game) |
In config.toml, kind names are case-insensitive and a few alternate spellings are
accepted and normalized to the names above: otherHome / other_home for home,
otherWine / other_wine for wine_prefix, otherWindows, otherLinux, and otherMac
(and their snake_case forms) for the matching drive kinds, xbox for microsoft,
launch_box for launchbox, and a bare drive for the drive kind of the current OS.
Globs and <game>
Section titled “Globs and <game>”Root paths support Ludusavi-style globs (D:/Games/*) and the <game> placeholder
(~/prefixes/<game>), which resolves per title at scan time instead of walking every child
folder. Combined patterns like ~/prefixes/*/<game> work too.
[[additional_roots]]kind = "other"path = "D:/Games/*"
[[additional_roots]]kind = "wine_prefix"path = "/home/deck/Games/Heroic/Prefixes/GamePrefix"