Envision

Envision #

Envision is a graphical app that acts as an orchestrator to get a full Monado or WiVRn setup up and running with a few clicks.

Do not use Envision for WiVRn directly unless you absolutely need it to access experimental patches. See WiVRn as WiVRn has it’s own GUI much more suited to itself than Envision and may be installed via Flatpak, AUR, or Fedora repos.

Envision attempts to construct a working runtime with both a native OpenXR and an OpenVR API, provided by OpenComposite, for client aplications to utilize. Please note the OpenVR implementation is incomplete and contains only what’s necessary to run most games for compatibility. If you plan to implement software, utilize the OpenXR API, specification here.

We recommend against using Envision if your distro is NixOS. See our NixOS page for more info.

You can download the latest AppImage snapshot from GitLab Pipelines.

If you are on Arch, you can use the AUR package envision-xr-git.

Getting started #

Upon launching Envision, you will need to select a profile on the bottom of the left side bar.

Profiles that are available by default:

  • Lighthouse driver: Proprietary SteamVR Lighthouse driver with top tracking quality. Recommended for Lighthouse HMDs.
  • OpenHMD: Recommended for Oculus CV1 HMDs.
  • Simulated headset: Dummy driver for testing on a flat screen.
  • Survive: FOSS Lighthouse driver implementation. Lower track quality and less robust than SteamVR proprietary.
  • WMR: Use with any SLAM based HMD or Windows Mixed Reality headsets. Inlcudes Rift S support.
  • WiVRn: Robust wireless streaming solution for all Android based standalone HMDs.

Monado does not have a launcher app, so after connecting your headset the displays will power on but stay black. This means you can now start VR/XR applications.

You may want to launch WlxOverlay-S first and use it to access your desktop and other VR titles. You can even start it automatically alongside the Monado/WiVRn session, by enabling it in the Plugins menu.

Plugin system #

The plugin system for Envision allows you to launch anything (usually OpenXR overlays) alongside the Monado/WiVRn session.

Open the Plugins window by clicking the kebab menu (three dots) at the top of the Envision window, and clicking “Plugins”. Here, you can install overlays like WlxOverlay-S or Stardust XR (or a custom plugin — see below). After installing plugins and toggling them on, once you start a profile, the enabled plugins will start alongside it.

Plugins are the replacement for the “autostart” feature from older versions.

Adding a custom plugin #

The plugins included in the store are just a quick front-end to the latest release AppImages. For everything else, you can create a custom plugin that runs any given executable script or binary.

For example, if you installed WlxOverlay-S from AUR or built it from source, you can disable the original WlxOverlay-S plugin and create a custom plugin to run it:

  1. Create a new file ~/.local/bin/wlx-but-newer (creating the ~/.local/bin directory if it does not exist).
  2. Give it the content:
    #!/usr/bin/env bash
    /usr/bin/wlx-overlay-s --openxr
    
  3. chmod +x ~/.local/bin/wlx-but-newer
  4. In Envision, open the Plugins window.
  5. Add a custom plugin by clicking the ➕ plus button.
  6. For the executable file, point it to the script you just created.
  7. Name the plugin “Wlx but newer”.
  8. Save, and then enable the new plugin.

Now starting the profile will also start your custom or AUR version of WlxOverlay-S.

Plugin troubleshooting #

On some systems, a built-in plugin may not launch. This can happen for a number of reasons, but one in particular is so obtuse that it’s worth a mention:

Please uninstall AppImageLauncher. It intercepts the normal AppImage starting behavior in a dirty way that we can’t predict.

You can tell if you are affected if, when you run the WlxOverlay-S AppImage in terminal (whether in plugin form in ~/.local/share/envision/plugins, or downloaded directly from GitHub), you only get the output execv error: No such file or directory.

Steam Flatpak #

To use Envision with the Flatpak version of Steam, you’ll need to add the following filesystem overrides to Steam using an application like Flatseal:

  • xdg-data/envision:ro
  • xdg-run/monado_comp_ipc
  • xdg-config/openxr:ro
  • xdg-config/openvr:ro

Alternatively, you can use the following command:

flatpak override --filesystem="xdg-data/envision:ro" --filesystem="xdg-run/monado_comp_ipc" --filesystem="xdg-config/openxr:ro" --filesystem="xdg-config/openvr:ro" com.valvesoftware.Steam

Known issues #

The SteamLinuxRuntime_sniper-arm64 issue #

If VR games inexplicably launch in desktop mode (even after ensuring Envision app was launched after Steam did), or Envision crashes with this in terminal/logs:

thread 'main' panicked at src/util/file_utils.rs:165:9:
Failed to copy /home/USERNAME/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/_v2-entry-point to /home/USERNAME/.local/share/envision/backups/_v2-entry-point.bak: No such file or directory (os error 2)

This is because Valve accidentally changed this installdir. This has since been fixed on their end, but anyone who has installed or moved the runtime between 18 July 2025 and 6 August 2025 will run into this, even if they are not using ARM64. Uninstalling and reinstalling sniper would fix this but it’s difficult with Protons installed. Removing the files and forcing revalidation doesn’t work either; it’ll still install to -arm64. You may symlink it:

ln -s ~/.steam/steam/steamapps/common/SteamLinuxRuntime_sniper-arm64 ~/.steam/steam/steamapps/common/SteamLinuxRuntime_sniper
# or if it's located on a different drive e.g. /mnt/steam
ln -s /mnt/steam/steamapps/common/SteamLinuxRuntime_sniper-arm64 /mnt/steam/steamapps/common/SteamLinuxRuntime_sniper

Or, you may find “Steam Linux Runtime 3.0 (sniper)” in your Steam library and use the “Move install folder” button to move it to another drive and back. This will force it to take on the fixed install dir.

Experimental feature settings #

The following resources can be entered into your Envision profile repo and branch settings to enable early access to code before it’s fully upstream in Monado itself. To enable these feature sets, simply clone your profile, edit it with these settings, then build.

WMR & Rift S controller tracking #

This enables positional tracking for WMR controllers in full 6dof. Includes Rift S support & controllers.

For the Envision XR Service settings:

  • Repo: https://gitlab.freedesktop.org/thaytan/monado
  • Branch: dev-constellation-controller-tracking

Experimental Pimax support branch #

Modest WIP. Allows certain Pimax HMDs to function with Monado. Look Ma, no Pitools!

For the Envision XR Service settings:

  • Repo: https://gitlab.freedesktop.org/Coreforge/monado/
  • Branch: pimax

Dumped distortion parameters are found here, please follow the instructions in the README.md and consult with LVRA to add your own if missing.

OpenHMD Rift CV1 support #

The Oculus Rift CV1 is supported on the OpenHMD profile of Envision.

Start the profile with your headset placed on the floor in clear view of all bases to generate this file as your calibrated playspace origin first run and delete it to reset the configuration.

A calibration of base stations will be saved to disk at ~/.config/openhmd/rift-room-config.json.

Fix View #

In Steam OpenVR games, the eye’s are not calibrated properly, and result in double vision or cross eye effect.

You can add “OXR_PARALLEL_VIEWS=1 %command%” to the launch options to fix this.