Free & open source · for Monado and WiVRn

Your VR home
on Linux.

Monadeck is a SteamVR-style dashboard, launcher and desktop overlay for Monado. Launch your games, rebind your controllers and bring your desktop into VR, all without taking the headset off.

.rpm · .deb · AppImage · MIT licensed

Monadeck's curved dashboard floating over a mountain landscape in VR, showing VRChat and a row of games, with a wrist watch on the left hand and a laser pointer on the Play button
  • Monado
  • WiVRn
  • xrizer
  • Steam & Proton
  • UEVR
  • VRChat OSC
  • XSOverlay
  • Wayland

Features

Everything you reach for,
right where you are

Monadeck lives in two places: a dashboard you summon in the headset, and a small control panel on your desktop that looks after the runtime.

Library

Your games, a trigger pull away

Steam and non-Steam games with their artwork, collections, favorites and playtime, on a curved dashboard you summon with the left system button. Flat Unreal Engine games launch in VR through UEVR.

  • Collections, favorites and sorting by playtime or size
  • A SteamVR-style loading screen while a game starts
  • Japanese, Chinese and Korean titles too
The Library page on the curved dashboard, with a VRChat loading card floating in front of it

Controller bindings

Rebind SteamVR games without leaving VR

A SteamVR-style binding editor, in the headset and on the desktop. Pick a game, point at a button on the controller drawing and choose what it does, with a mirror mode that copies one hand to the other.

  • Valve Index, Touch and Vive controllers
  • Monadeck's own buttons are bindings too, chords included
  • Games pick up your changes while they run
The binding editor for VRChat in the headset: action lists on both sides and Index controller drawings in the middle, with a line linking the right A button to its Jump binding

Desktop

Bring your monitors with you

Each monitor becomes a curved screen you can grab, resize and hang anywhere, with a real mouse and a VR keyboard. Save layouts for standing or lying down, then dim and warm them up for late nights.

  • Zero-copy capture through PipeWire and the desktop portal
  • Hide every screen and bring them back with a double tap
  • A full keyboard that follows your text fields
A desktop monitor shown as a large curved screen in VR, with the VR keyboard floating below it

Watch & notifications

Never miss a message

Desktop notifications and XSOverlay messages appear as cards in front of you. Your wrist carries a watch with the time in two more cities, device batteries, media controls and four quick buttons of your choice.

A Discord notification card floating at eye level over a sunset, with the watch raised on the left wrist below it
Watch with media controls for a song playing on Spotify
Media controls
Watch with the list of recent notifications
Recent notifications
Watch with a countdown timer running
A timer running

Tour

Take a look around

Every page of the dashboard, as it hangs in front of you in the headset. Pick one from the rail.

The Home page of the dashboard

Home puts your most recent games, your collections and the selected game's artwork up front.

And more

Made for long sessions

The small things that keep you in the headset for one more hour.

Play flat games with VR controllers

Gaming mode turns your controllers into an Xbox pad, with rumble and per-game remaps to keys and mouse. Hang the game in the world, on your head, or between your hands.

Gaming mode settings: gaming mode on, where the screen hangs, rumble and remap profiles The watch in gaming mode, with its own quick buttons

Let games drive the overlay

An OSC listener lets VRChat avatars and tools like VRCOSC toggle the watch, dashboard and screens, or raise a notification.

/monadeck/watch       the watch
/monadeck/dashboard   the dashboard
/monadeck/screens     your screens
/monadeck/gaming      gaming mode
/monadeck/notify "title" "body"

A timer and your play area, in reach

Set a countdown that chimes even with the dashboard closed, nudge your floor, or drag the whole play area with your hands.

The timer page with a five minute countdown ready to start

Bring your companion apps

Plugins launch as soon as the runtime is up: face tracking, sleep tools, or anything you point it at. Cleanup scripts can run once it stops.

  • VRCFaceTracking
  • NemuriXR
  • Any executable
  • Installed apps

Monado fork

Unlocked by the Monado fork

Monadeck runs on stock Monado. These need the Monado fork, which the desktop app installs in one click. Without it, they simply stay hidden.

The Monado fork
Fork

Freeze an app's hands

Switch a controller off and the game keeps its hand where it was, or lets go so your avatar's own pose takes over. Per app, from the headset.

The Monado page: VRChat and NemuriXR running, with Set active, Freeze hands and Kill buttons
Fork

Switch devices on any time

Turn on a controller, a tracker or your gloves after the runtime has started and it joins right away, finger tracking included. Swap gloves for controllers mid-session.

Fork

Screenshots with a finger frame

Frame a shot with both hands and it's taken. It lands on your wrist to open, copy, or read a QR code from.

A screenshot opened in a photo window in VR, next to the watch showing the new screenshot

Also from the fork: switched-off and out-of-tracking devices greyed out like in SteamVR, and battery levels for UDCAP gloves.

Desktop app

Set up Monado in one click

The desktop app installs a prebuilt Monado and the latest xrizer, starts the runtime and switches OpenXR and OpenVR over to it. Your SteamVR setup is backed up first and put back when you stop.

  • Live devices and batteries, running apps at a glance
  • Launch options and environment variables per runtime
  • The binding editor and gamepad remaps on a big screen

Standalone headset? Monadeck can run WiVRn instead, with PIN pairing and the same overlay in the headset.

The desktop app's settings window The small Monadeck deck window: runtime ready, headset and controllers with batteries, running apps

Install

Up and running in three steps

  1. 1

    Install Monadeck

    Grab the package for your distro from the releases page. The in-headset overlay comes inside it.

  2. 2

    Set up the runtime

    In Settings › General, install the built-in Monado and xrizer or point at your own, then start the runtime. Your old config is backed up.

  3. 3

    Put the headset on

    The left system button summons the dashboard. Point and pull the trigger to select, grip to grab and move things.

What you need

  • Linux with a Wayland desktop (tested on KDE Plasma)
  • Steam, with Proton for Windows games
  • A Monado-based runtime, which Monadeck can install for you, or WiVRn 26.6+ for a standalone headset

Or build it yourself

git clone https://github.com/Eidenz/monadeck
cd monadeck/desktop
pnpm install
pnpm tauri build

FAQ

Good questions

Will it break my SteamVR setup?

No. Before it switches runtimes, Monadeck backs up your OpenXR and OpenVR runtime files, and it puts them back when you stop the service. SteamVR keeps working as it did.

Do I need the Monado fork?

No. Monadeck works with any Monado-based runtime. Controller freeze, in-headset screenshots, device hotplug, switched-off and out-of-tracking states and glove batteries need the fork, and they hide themselves without it.

Does it replace Envision?

Partly. Monadeck doesn't build Monado from source or manage drivers; Envision is the right tool for that, and Monadeck can sit next to it. Monadeck takes over from there: running the service, and everything you do in the headset.

Which headsets work?

Anything your Monado build drives, or a standalone headset streaming through WiVRn. Controller drawings in the binding editor cover Valve Index, Touch and Vive controllers.

How do I summon the dashboard?

Press the left system button (the left menu button on Touch controllers). It's a binding like any other, so you can move it in Bindings › Monadeck. The full gesture list lives under Settings › Controllers in the headset.

Put the headset on.

Monadeck is free, open source and ready for your next session.