protonscr

[BUG] Games that ship with their own binding files are broken.

steamvropen bug
ValveSoftware/SteamVR-for-Linux#619 · opened 2023-10-02 by Bitwolfies · updated 2025-12-02 · 5 comments · github
BBitwolfies 2023-10-02 github

Describe the bug
Games such as Half Life 2: VR Mod that ship their own binding configs are broken, the steam vr controller menu will switch to custom bindings with no way to edit the bindings, or switch it back to default.

To Reproduce
Play Half Life 2: VR mod or any other game that ships its own bindings
Be on current Linux stable SteamVR or 2.0, doesn't matter.
Check the VR controller menu, notice its set to custom and you cant change it.
Notice that you cant pick up anything in game.

Expected behavior
A clear and concise description of what you expected to happen.
Idk working controls.

System Information (please complete the following information):

  • Distribution: Arch
  • SteamVR version: 2.0
  • Steam client version: October 2nd beta
  • Opted into Steam client beta?: Yes
  • Graphics driver version: Nvidia 535.113
DDamianS-eng 2025-11-04 github

This seems to be the same issue plaguing 3DSenVR when running on Linux. The game runs fine on Proton 5.13 and above, but SteamVR can never find the game's bundled binding manifest files, so hand tracking never works.

Ffarmboy0 2025-11-04 github

Check the game's action manifest json file. If it contains absolute windows paths SteamVR will have trouble with them. You should edit the paths to be relative then SteamVR can use them. Unfortunately some games generate the action manifest during run time so this might not be possible.

DDamianS-eng 2025-11-05 github

Check the game's action manifest json file. If it contains absolute windows paths SteamVR will have trouble with them. You should edit the paths to be relative then SteamVR can use them.

This contradicts the instruction on the Valve wiki:

OpenVR uses a JSON file called the "action manifest" to allow developers to provide certain input details about their applications.

This file can be located anywhere on disk under the application's install directory. The application tells OpenVR where the file is with the IVRInput::SetActionManifestPath() function. The full path to the file must be provided; relative paths are not accepted.

So is Valve incorrect here?

Ffarmboy0 2025-11-05 github

No its not, but you should understand that SteamVR which is linux native cannot deal with windows paths from windows apps run with proton. Proton needs to convert those files when handling the action manifest openvr api but currently AFAIK it does not.

DDamianS-eng 2025-12-02 github

No its not, but you should understand that SteamVR which is linux native cannot deal with windows paths from windows apps run with proton. Proton needs to convert those files when handling the action manifest openvr api but currently AFAIK it does not.

The Windows paths having a translation issue with Linux has nothing to do with absolute vs. relative paths, because this exact problem can happen if the basename used for the file, not just the path, can conflict with Linux naming convention. So going against Valve's advice and using relative paths anyway doesn't solve this.

Anyway, one solution I found was to check the SteamVR log for the exact error about the missing input manifest file, then create a soft-link in that location whose path is the exact string SteamVR is looking for as stated in the log (surround the link path in a string) and then direct it to the proper name or location.

Proton versions