Skip to main content

Monadeck — a SteamVR-style Launcher for Monado

Envision works, but I never liked its GTK UI or its PATH-bound, .desktop-file plugin system — and it does a lot of things (source builders, driver profiles, dependency checks) I never use. So I built Monadeck: a SteamVR-style launcher and orchestrator for my Monado fork, focused on the ~40% of Envision I actually reach for.

Repo: github.com/Eidenz/monadeck — grab the latest release there.

Think of it as the SteamVR you no longer have: it starts the runtime, shows you what's connected, and gives you an in-headset dashboard to launch games and adjust your playspace.

What it does

Runtime orchestration (the desktop app):

  • Starts and stops monado-service with the right environment for your headset (render scale, pacing, compositor, NVIDIA/AMD tweaks) — no launch-option guesswork.
  • Registers Xrizer as your OpenVR runtime automatically.
  • Shows a live device strip (headset, controllers, trackers, gloves) with battery levels via libmonado.
  • Launches overlay plugins by explicit path or by picking an installed app.

One-click setup (no building):

  • If no Monado is found, Monadeck can download the prebuilt portable fork and Xrizer for you, into its own folders — it never touches or overwrites an existing install.
  • A built-in pre-flight check verifies the xr-hardware udev rules and pkexec are present, and tells you exactly how to fix them if not.

Coexistence is a hard rule: every runtime switch backs up your active_runtime.json and openvrpaths.vrpath, and restores them when you stop — so Monadeck never breaks an existing SteamVR setup.

In-headset dashboard

Enable the built-in overlay and you get a curved, SteamVR-style dashboard you can summon over any game:

  • Game library — Steam and non-Steam titles (it parses shortcuts.vdf, which most launchers miss), with cover/hero/logo art, favorites, collections, sorting, and playtime.
  • Playspace mover — nudge and rotate your play space like OVR Advanced Settings, with per-game overrides on top of a global offset.
  • Timer, battery readouts, low-battery warnings, and in-headset toasts.
  • Set active / Freeze / Kill per running app (Freeze uses the fork's controller-freeze feature).
  • Haptics and optional UI sounds.

Visual binding editor

Instead of hand-editing Xrizer/SteamVR binding JSON (see the manual method), Monadeck bundles a visual binding editor: browse your games, click controller zones, assign actions, tweak parameters, and save straight to an Xrizer per-game override. Index/Knuckles are fully supported.

Bonus: flat games in VR (UEVR mode)

Monadeck can inject UEVR into flat Unreal Engine games for you — it downloads the injector, launches the game under Proton, and waits for injection, all from the in-headset library. See the UEVR page for the details.

note

Monadeck targets my Monado fork running from prefix /usr (or a Monadeck-installed portable copy). It also works against stock Monado — features that need the fork (like controller freeze) simply hide themselves when the loaded runtime doesn't support them.