VRCX icon indicating copy to clipboard operation
VRCX copied to clipboard

[Bug] Linux registry backup doesn't work when compat tool is in non-standard location

Open alexwh opened this issue 7 months ago • 0 comments

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:

  1. Only ~/.steam/root/compatabilitytools.d is checked, but tools can also be located under /usr/share/steam/compatibilitytools.d, /usr/local/share/steam/compatibilitytools.d and any paths in $STEAM_EXTRA_COMPAT_TOOLS_PATHS[1].
  2. 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.vdf file to identify tools[2]. I don't know the format for the filenames of the manifests placed directly in compatibilitytools.d because it's not specified by Valve. I assume simply any vdf in the root of the compatabilitytools.d folder counts.
  3. The compat tool can be located in a different relative or absolute directory, as defined in the compatibilitytool.vdf's install_path key[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:

  1. Install proton-ge-custom-rtsp-bin
  2. Force the use of Proton-GE-RTSP in the Steam game properties
  3. Click backup under advanced settings, VRC Registry Backup
  4. 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

alexwh avatar Sep 09 '25 16:09 alexwh