xrizer #
xrizer is a reimplementation of OpenVR on top of OpenXR. This enables you to run OpenVR games through any OpenXR runtime without running SteamVR.
Application developers: The OpenVR implementation is incomplete and contains only what’s necessary to run most games for compatibility and may omit certain information - if you plan to implement software, utilize the OpenXR API.
Installation #
If using WiVRn, or if you are manually setting up Monado instead of using Envision, you can download xrizer at the following sources:
Arch Linux #
xrizer (latest release) and xrizer-git (latest development build / nightly) are available on the AUR.
GitHub release or CI jobs (for other distributions without a distro package) #
See the xrizer README for instructions.
Envision #
Edit your profile and change the ‘OpenVR Compatibility Type’ to xrizer.
Using full body trackers #
Currently xrizer does not support full body tracking, however there is a fork by Sapphire, with patches by RinLovesYou with support while using Monado. You should report issues encountered when running this branch to Sapphire (@sapphiwe on Discord), unless reproducible on the upstream main branch.
To use the above fork, follow these steps:
Envision #
- Click the three dots next to the profile selector and select ‘Edit profile’
- If a popup asks if you would like to duplicate the profile, click yes.
- Scroll down to ‘OpenVR Compatibility’ and set the following fields:
- OpenVR Compatibility Repo:
https://github.com/ImSapphire/xrizer - OpenVR Compatibility Branch:
next
- OpenVR Compatibility Repo:
- Clean build your profile from the menu at the top right, or use the Ctrl+F5 keybind.
NixOS #
Apply an overlay over nixpkgs to override the xrizer src:
{
nixpkgs.overlays = [
(final: prev: {
xrizer = prev.xrizer.overrideAttrs {
src = final.fetchFromGitHub {
owner = "ImSapphire";
repo = "xrizer";
# Fill in the latest commit hash from https://github.com/ImSapphire/xrizer/commits/next (click the Copy full SHA button on the right side)
rev = "";
# Fill with the correct hash from the build error
hash = "";
};
};
})
];
}
Or reference the source using flakes (so that it updates with the nix flake update command):
# flake.nix
{
inputs.xrizer-fbt = {
url = "github:ImSapphire/xrizer/next";
flake = false;
};
outputs = {
nixosConfigurations = { nixpkgs, ... } @ inputs: {
<hostname> = {
<...>
specialArgs = { inherit <...> inputs; };
};
};
}
# configuration.nix
{ inputs, ... }:
{
nixpkgs.overlays = [
(final: prev: {
xrizer = prev.xrizer.overrideAttrs {
src = inputs.xrizer-fbt;
};
})
];
}
Rebinding controls #
The process is mostly the same as OpenComposite, however there are a few things different:
- The default directory name is
xrizer, notOpenComposite - You can override the location of the custom bindings directory using the environment variable
XRIZER_CUSTOM_BINDINGS_DIR - The name of the
.jsonfile will be the internal name of the controller type, but lowercase (e.g. oculustouch.json)