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

Open
opened 2026-04-05 16:17:39 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @alexwh on 9/9/2025

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).

64811765ea/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] 3cfbf9e3cd/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

*Originally created by @alexwh on 9/9/2025* **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]](https://github.com/ValveSoftware/steam-for-linux/issues/6310#issuecomment-511630263). 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]](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/steam-compat-tool-interface.md). 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]](https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/blob/main/docs/steam-compat-tool-interface.md). 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]](https://gitlab.winehq.org/wine/wine/-/merge_requests/3124)[[4]](https://serverfault.com/a/1090483), which is probably fine for a backup.~ Wine flushes the registry to disk every 30 seconds[[5]](https://gitlab.winehq.org/wine/wine/-/blob/3cfbf9e3cd99dd01d3215c6952ae18ce88207d22/server/registry.c#L125), 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
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/VRCX#329