[Bug] Linux registry backup doesn't work when compat tool is in non-standard location
Describe the bug When attempting to perform a registry backup with a system wide compat tool, VRCX hits the following error handling code (which should also probably be a logger call rather than a console output).
https://github.com/vrcx-team/VRCX/blob/64811765ea43dd2dcd2ddb69fa84c9f2b6ba41f6/Dotnet/AppApi/Electron/RegistryPlayerPrefs.cs#L242-L256
This can be due to a few different reasons:
- Only
~/.steam/root/compatabilitytools.dis checked, but tools can also be located under/usr/share/steam/compatibilitytools.d,/usr/local/share/steam/compatibilitytools.dand any paths in$STEAM_EXTRA_COMPAT_TOOLS_PATHS[1]. - The compat tool name and the folder it's located in aren't always the same, Steam checks the above folders for any subfolders containing a
compatibilitytool.vdffile to identify tools[2]. I don't know the format for the filenames of the manifests placed directly incompatibilitytools.dbecause it's not specified by Valve. I assume simply any vdf in the root of thecompatabilitytools.dfolder counts. - The compat tool can be located in a different relative or absolute directory, as defined in the
compatibilitytool.vdf'sinstall_pathkey[2].
Additionally, the toolmanifest.vdf can specify an alternate binary, though I don't know if there are any compat tools that exist that would cause a situation where reading this would be required. Attempting to call the currently hardcoded files/bin/wine binary could possibly fail, either because it doesn't exist or running the specified commandline parameter is required for some other kind of presetup.
In my case, the problem is with just reason 1 and 2. The compat tool I'm using installs to /usr/share/steam/compatibilitytools.d/proton-ge-custom-rtsp - the path is in /usr/share/ but also the folder name doesn't match its display_name defined in config.vdf (Proton-GE-RTSP).
Given the complexity in supporting the above fixes, it may be easier to simply try and parse the registry ourselves directly from ${_vrcPrefixPath}/user.reg. ~I couldn't find concrete information on how often Wine flushes to this file (on Windows it's not consistent), but it appears to be on the order of seconds[3][4], which is probably fine for a backup.~
Wine flushes the registry to disk every 30 seconds[5], which is probably fine for a backup.
[1] https://github.com/ValveSoftware/steam-for-linux/issues/6310#issuecomment-511630263 [2] https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/steam-compat-tool-interface.md [3] https://gitlab.winehq.org/wine/wine/-/merge_requests/3124 [4] https://serverfault.com/a/1090483 [5] https://gitlab.winehq.org/wine/wine/-/blob/3cfbf9e3cd99dd01d3215c6952ae18ce88207d22/server/registry.c#L125
To Reproduce Steps to reproduce the behavior:
- Install proton-ge-custom-rtsp-bin
- Force the use of Proton-GE-RTSP in the Steam game properties
- Click backup under advanced settings, VRC Registry Backup
- Error in stdout:
Wine not found in CompatTool path
2025-09-09 16:43:04.2146 [INFO ] VRCX.AppApiElectron - VRC Wine path was not found
Wine not found in CompatTool path
2025-09-09 16:43:04.2169 [INFO ] VRCX.AppApiElectron - VRC Wine path was not found
2025-09-09 16:43:04.2609 [INFO ] VRCX.LogWatcher - SetDateTill: 09/09/2025 01:20:22
Wine not found in CompatTool path
2025-09-09 16:43:04.5972 [INFO ] VRCX.AppApiElectron - VRC Wine path was not found
Wine not found in CompatTool path
2025-09-09 16:43:09.3590 [INFO ] VRCX.AppApiElectron - VRC Wine path was not found
What version you are running vrcx-bin version 2025.08.17-1 from the AUR proton-ge-custom-rtsp-bin version GE_Proton9_22_rtsp17_1-1 from the AUR