Open-source project
elvissteinjr/DesktopPlus avatar
elvissteinjr/DesktopPlus

DesktopPlus: an OpenVR overlay for your Windows desktop

Advanced desktop access for OpenVR

585 stars47 forksC++GPL-3.0

At a glance

What is it?
Desktop+ is a Windows tool that mirrors your desktop and individual windows into VR as OpenVR overlays you can attach to the play space, the dashboard, the headset, the controllers or a tracker, and drive with controller actions, a laser pointer and a VR keyboard. It is a VR-only tool with a hard Windows version floor, and its latest release is a beta, sitting on top of the stable v3.6.
Who is it for?
DesktopPlus fits a VR user on Windows who wants their desktop inside the headset as an adjustable overlay with real interaction, and it does not fit a flat screen user, a Linux or macOS user, or anyone who avoids beta builds, since the newest release v3.6.1 is one.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 18 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Putting a desktop inside the play space

Desktop+ is described as advanced desktop access for OpenVR, and the practical meaning of that is a desktop you can see and use from inside a headset.

The core capability is mirroring. Desktops and individual windows are shown in VR with low latency, and the overlay is not a flat rectangle pasted in front of you. It can be resized, repositioned, curved, faded, cropped, and switched between profiles, and it can be shown in 3D layouts including SBS, HSBS, OU and HOU, which are the two-eye arrangements for side by side, horizontal, over under and horizontal over under.

The second capability is where it gets interesting, which is that the overlay is not tied to one place. The README lists the origins it can be attached to, and they are the play space, the dashboard, the HMD, the controllers and a tracker. So the same desktop can live on a wall in your room, on the dashboard you pull up when you take the headset off, or in your hand on a controller, and you decide which per profile and per application.

The third is that overlays can be switched automatically. The application profiles feature changes overlay profiles when a specific VR application is running, so a flight simulator can have its own set of windows, sizes and positions without you touching anything.

The audience is a specific person: a VR user on Windows who wants their applications in the headset with real interaction, and who is willing to configure overlays, origins and profiles. The project is C++, licensed GPL 3.0, and distributed both on Steam and as release archives, with a companion repository for the browser component.

Actions, a laser pointer and a keyboard in the headset

A mirrored desktop is not much use if you cannot touch anything, and that is where the interaction features carry the project.

Actions are user-definable functions, and the README names two kinds, input simulation and running applications, and each can be bound to a controller input, a hotkey or a UI button. So an action can be a key press injected into the mirrored window, or the launch of a program, triggered from a controller. That is the difference between watching a desktop and working in it.

The laser pointer is a custom implementation rather than the runtime default, and its stated purpose is to allow non-blocking overlay interaction during gameplay. Blocking interaction would mean the overlay grabs input the moment you look at it, which breaks the flow of a game. A laser lets you point and choose without the desktop stealing the session.

The keyboard is configurable, with a PC-style VR keyboard, several layouts, and a keyboard layout editor for deeper customisation. It appears automatically when a text input widget is detected as focused, which is the behaviour that makes it usable, since you are not hunting for a button to summon it.

Three smaller features are worth naming because they show the project's age and care. The elevated access toggle exists so that UAC prompts and other UI-restricted interfaces can be dealt with in VR without running the whole application as administrator all the time. Gaze Fade fades the overlay out when you are not looking at it, which is the difference between a helpful panel and a permanent obstruction. And the window management behaviour ties focus to the overlay or dashboard state, and lets you drag an overlay by the title bar of the mirrored window.

The performance monitor shows system performance in real time, and browser overlays render web pages independently of your desktop, using a CEF based component that ships separately.

Three ways to install, and one of them is unstable

The installation options differ in how much you trust the build.

The first is Steam. Desktop+ has a store page on Steam, app 1494460, and the README's instruction is to install it from there and run it. For a VR application, a Steam install means the overlay is launched by the runtime the user is already running, which removes a class of startup and focus problems.

The second is the release archive. You download the latest archive from the releases page, extract it, and follow the instructions in the readme file included in the archive. If you want browser overlay support, the README adds that you must also download the Desktop+ Browser component from its own repository, because it is a separate project with its own releases.

The third is the nightly build, assembled by an automated build from the latest code changes. The README is direct about it: nightly builds are unstable and mostly untested, and you should prefer the latest release if possible.

That warning is worth taking seriously, and it is not unusual for this kind of project. A nightly build is where a new feature is tried first, and the presence of beta tags in the release history, v3.6.1 Beta and v3.5.2 Beta among the recent versions, suggests the current line is close to a stable point but not on one.

For basic usage, installation and troubleshooting the documentation is the readme file in the assets directory, and the user guide covers each setting in more detail, with step by step examples for common scenarios.

Building it takes Visual Studio and a specific Windows SDK

The build story is short, which is unusual for a project of this size, and it is short because the toolchain is fixed.

The Visual Studio 2019 solution builds out of the box with no further external dependencies. Building with Graphics Capture support requires Windows SDK 10.0.19041 or newer, and it downloads the C++/WinRT packages automatically, so there is no manual package step. Graphics Capture support can be disabled entirely if you want to, and in that case the Windows 8 SDK or newer is sufficient. The README points at DesktopPlusWinRT.h for the details of that switch.

The other compilers probably work, but the README is honest that they are neither tested nor do they have a build configuration, and building for 32-bit is not supported.

The browser component is a separate repository with its own build instructions, so enabling the browser overlay means building or installing two things.

For a user who is not a C++ developer, none of this matters, and it is worth saying so plainly. The release archive exists for exactly that case, and the Steam route exists for a smoother start. The build path matters for a fork, a patch, or a check of what the code actually does.

Windows version decides which features light up

The platform requirements are not a formality here, because the mirroring is implemented against Windows APIs that arrived at different times.

Desktop+ only runs on Windows 8.1 or newer, and the reason is given: it uses the DXGI Desktop Duplication API, which is not available on older versions of Windows. That is the floor for the whole application.

Window mirroring through Graphics Capture is a different path with its own floor. Basic support needs at least Windows 10 1803, full support needs Windows 10 2004 or newer, and some additional non-essential features require Windows 11 or Windows 11 24H2. So the same binary gives you one set of behaviour on Windows 10 1803 and a larger set on Windows 11, and the README is careful to say which features are affected.

That is the practical version of a compatibility table: the feature list in the README is not uniform across the versions it supports.

On the project side, the maintenance picture is current. The last push was on 2026-10-05 and the repository is not archived, with the recent releases being v3.6.1 Beta on 2026-10-05, v3.6 on 2026-08-14 and v3.5.2 Beta on 2026-07-21. The licence is GPL 3.0, and the README notes that Desktop+ includes work from third party projects, with their licences collected in a separate third-party licences file in the assets directory.

The repository layout is minimal for a project of this size, with a src/ directory, assets/, docs/ and the .github directory, and the user guide and readme are the documentation you actually need.

What an overlay can and cannot do for you

The limits here are structural rather than fixable, and they are worth understanding before you commit.

The first is platform. This is a Windows tool, and the mirroring depends on Windows specific capture APIs. There is no Linux or macOS path in the README, and for a headset user on those systems the tool simply does not apply.

The second is that it is a VR tool. The overlays are OpenVR surfaces, which means they exist in the headset and on the SteamVR dashboard. A user without a headset gets a program that has nothing to show. The alternative in that situation is the flat screen desktop view the runtime already provides, and the difference in approach is the whole point of Desktop+.

The third is that the desktop you mirror is the desktop you have, which means anything on it is on it. That is obvious in principle and worth stating for a user who keeps a chat client or a mail window open, since the overlay reproduces what is visible rather than curating it.

The fourth is the overlay count. The README says you can create as many overlays as SteamVR allows at once, so the limit is set by the runtime rather than by the project, and it is a real constraint on a setup with many applications.

Against a flat panel in VR, the difference in approach is worth spelling out. A flat panel is a monitor moved into the virtual space, which is one window at a fixed place. Desktop+ gives overlays an origin that can be the controllers, a curve, a profile per application, and interaction through a laser and actions, which is a different thing entirely. Against a physical monitor, the difference is that the desktop stops needing a desk, a second screen and a chair.

The practical way to evaluate it is to install the release build, mirror one application you use daily, and see whether the interaction model suits you, because the interaction is the feature and the mirroring is the easy part.

Editorial conclusion

DesktopPlus fits a VR user on Windows who wants their desktop inside the headset as an adjustable overlay with real interaction, and it does not fit a flat screen user, a Linux or macOS user, or anyone who avoids beta builds, since the newest release v3.6.1 is one. Before installing, check your Windows version against the DXGI Desktop Duplication and Graphics Capture requirements, install the Desktop+ Browser component separately if you want web overlays, and prefer the tagged release over the nightly build.

Frequently asked questions

What is Desktop+ and what does it do in VR?

It is advanced desktop access for OpenVR, mirroring desktops and windows into the headset as adjustable overlays that can be attached to the play space, the dashboard, the HMD, the controllers or a tracker. Overlays can be curved, faded, cropped, shown in 3D layouts and switched between profiles automatically per VR application.

How do I install Desktop+?

Install it from its Steam store page and run it, or download and extract the latest archive from the releases page and follow the included readme. Browser overlays need the separate Desktop+ Browser component, and the README warns that nightly builds are unstable and mostly untested.

Which Windows versions does Desktop+ require?

Windows 8.1 or newer, because it uses the DXGI Desktop Duplication API. Window mirroring through Graphics Capture needs at least Windows 10 1803 for basic support and Windows 10 2004 or newer for full support, and some additional non-essential features require Windows 11 or Windows 11 24H2.

Can I interact with the mirrored desktop from inside VR?

Yes. Actions are user-definable functions such as input simulation and running applications, bound to controller inputs, hotkeys or UI buttons, a custom laser pointer allows non-blocking interaction during gameplay, and a configurable PC-style VR keyboard appears automatically when a text input widget is focused.

What are the build requirements for Desktop+?

The Visual Studio 2019 solution builds out of the box with no further external dependencies, and Graphics Capture support requires Windows SDK 10.0.19041 or newer, which downloads the C++/WinRT packages automatically. Graphics Capture can be disabled if you prefer, in which case the Windows 8 SDK or newer is enough, and building for 32-bit is not supported.

Official sources

  1. elvissteinjr/DesktopPlus on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/elvissteinjr-desktopplus.svg)](https://hysenlabs.com/projects/elvissteinjr-desktopplus)

Was this useful?