VapoR#
VapoR is an implementation of an OpenVR runtime on top of OpenXR. It allows playing SteamVR/OpenVR games without using SteamVR.
VapoR has been shown to work better than xrizer with certain games, most notably “Blade & Sorcery” and “Derail Valley”.
Installation#
Install vapor-openvr-gitAUR (nightly) from the AUR.
Afterwards, if using WiVRn, VapoR can be selected as the OpenVR compatibility library through the WiVRn dashboard.
If using the system profile, go into the ≡ menu → “Preferences”, and change “OpenVR compatibility” to “VapoR”.
If you are using development profiles, edit your profile and change the “OpenVR Module Type” to “VapoR”.
See the NixOS page.
Currently, VapoR does not offer any tagged releases, one must compile it manually.
VapoR can be compiled manually through the following commands:
git clone https://github.com/micheal65536/VapoR.git
cd VapoR
cmake -B build
cmake --build buildIf using a distribution such as Mint or Pop!_OS that ship libopenxr-dev with a version lower than 1.1.36, you will need to disable the system OpenXR loader when configuring the build. This can be done by appending -DUSE_SYSTEM_OPENXR=OFF to the cmake -B build command above, resulting in cmake -B build -DUSE_SYSTEM_OPENXR=OFF.
You can check the version of the package by running dpkg -s libopenxr-dev | grep -i version.
After compiling, the vrclient.so library will be located under build/src/vrclient.so.
To use VapoR, you must set up the correct OpenVR runtime directory structure. This can be done automatically by using sudo make install in the build directory, Which will set up the required directory structure under /usr/local/lib/VapoR, along with installing device profiles and render models under /usr/local/share/VapoR.
If using WiVRn, VapoR can be selected as the OpenVR compatibility library through the WiVRn dashboard.
If for some reason the dashboard doesn’t automatically detect VapoR; a custom path can be specified instead, which should point to /usr/local/lib/VapoR.
⚠️ WarningIf you are using a headset other than a Quest, you must change the device profile in the configuration file. Otherwise input and possibly other things may not work.
Configuration#
Rebinding Controls#
TUI (easy)#
Use obah (OpenVR bindings are hard), making sure to select VapoR when saving your bindings.
Manual (harder)#
The process is mostly the same as xrizer. However, there are a few differences:
- The custom bindings must be in a file named
vapor_binding.json, not in a folder calledxrizer. You cannot override this location using an environment variable. - You cannot have a .json files for each controller type, all bindings must be located in
vapor_binding.json.
Configuration file#
VapoR offers some configuration options that can be used to set or override behavior. The list of options can be found on VapoR’s README.
VapoR loads configuration files from the following locations:
${CMAKE_INSTALL_PREFIX}/share/VapoR/config.json. (${CMAKE_INSTALL_PREFIX}is/optif installed from the aur, otherwise its/usr/local/by default if compiled manually)$XDG_CONFIG_HOME/VapoR/config.json(defaults to$HOME/.config/VapoR/config.json).vapor_config.jsonin the current working directory.
If a configuration file is present in the current working directory, it will have priority over the configuration files in the other listed directories.
If desired, one can override the searched location, by setting the VAPOR_DIR environment variable. In which case VapoR will try to load a configuration file from $VAPOR_DIR/config.json.
Device profile#
Setting a device profile is only required if using a headset other than a Quest. Currently, only the following are supported:
alvr_quest2, if using a Quest 2.alvr_quest3, if using a Quest 3.steamvr_vive, if using a HTC Vive.
The alvr_ in the names of the Quest profiles is due to the property sets being dumped from an ALVR setup. These are the profiles that you should use if using a Quest, and also the profiles that are automatically used by VapoR.
Below is an example of how to set this variable in a configuration file located at $HOME/.config/VapoR/config.json
{
"device_profile": "steamvr_vive"
}Fixes#
VapoR also supports using certain fixes in the configuration file. The list of available fixes can be found on VapoR’s README
To use a fix, simply add it to VapoR’s configuration file, under the fixes key, like so:
{
"fixes":{
"flip":true
}
}The above configuration file will flip the image upside down (or right side up if it was already upside down).
Troubleshooting#
My game appears upside down#
See the fixes section on how to apply the “flip” fix.