• Stars
    star
    507
  • Rank 87,068 (Top 2 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 1 year ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10+. Works with VR, obs, streaming software, etc

Virtual Display Driver

Build GitHub release (with filter)

This is a Windows driver made in Rust which creates a virtual desktop.

It has many uses, such as:

  • A private virtual desktop for VR use
  • For remote desktops
  • For screenshare presentations, to give you more workspace with a second monitor
  • Getting a higher resolution (or higher refresh rate) display when you don't have a physical one on-hand (though note you can only use it in software/VR)
  • Other uses? Let me know!

Supports: Windows 10 2004+ (x64 only)

For any bug reports, please see the debugging or reporting crashes section to get the panic message for the bug report

Features

  • Multiple monitors (up to 10)
  • Multiple resolutions per monitor
  • Multiple refresh rates per resolution
  • App to configure them all, disable all/individual monitors
preview.mp4

How to install

  1. Go to the releases section for the latest driver.
  2. Download (you may receive a warning, just press accept)
  3. Install certificate
  4. Run the msi installer
  5. The driver will be installed, started, and you can find a shortcut to the control app in the start menu, named "Virtual Display Driver Control"

How to install portable version

  1. Go to the releases section for the latest driver.
  2. Download (you may receive a warning, just press accept)
  3. Install certificate
  4. Install install.reg
  5. Open device manager
    • click on any item in the list
    • go to Actions -> Add legacy hardware
    • next on Install hardware that I manually select from a list
    • next on `Show all devices
    • click on Have Disk... and select the folder with the driver files file in it
    • finish the setup
  6. The driver will be installed and started. The control panel exe you see in the folder will work from anywhere you put it.

Installing the certificate

The certificate needs installation for Windows to accept the driver

  1. In your downloaded zip, there is a file DriverCertificate.cer and install-cert.bat
  2. Open a cmd prompt as admin and run install-cert.bat
  3. Verify the certificate installed properly. *

* If the certificate didn't install properly, then the driver won't install. If driver installation fails, this is most likely the reason why; and you should check that the certificate is actually installed. Try manually running the commands in the install-cert.bat file (below) in an admin cmd prompt to make sure the certificate is installed correctly (for both root and TrustedPublisher stores). The commands will tell you if they successfully added it or not.

certutil -addstore -f root "DriverCertificate.cer"
certutil -addstore -f TrustedPublisher "DriverCertificate.cer"

You can also search for Manage Computer Certificates, look in Trusted Publishers and Trusted Root Certification, you will see the certificate named DriverCertficate.

image

You can manually import it by right clicking on the menu entry -> All Tasks -> Import, and following the instructions in the import wizard

image

Why is it so difficult? The reason I didn't add auto certificate installation is because I believe certificates are a personal thing, and should not be added automatically without the users knowledge.

Updating

  1. Download the new release
  2. Install the msi package

Using the app

Please see the wiki for instructions on using the app.

How to build

  1. Download and install Visual Studio (use the 2022 edition)
    • Select and install the Desktop development with C++ workload as well as Windows SDK
  2. Install the WDK
  3. Install cargo-make if you don't have it
  4. Install cargo-target-dir

You can build it with cargo make build (debug) or cargo make -p prod build (release), and check the target/output directory for all the files

To build the installer, do a cargo make build-installer (dev) or cargo make -p prod build-installer (release). In order to build the installer, you need wix toolset installed and on Path

... Or, fork my project and build it with github actions. You will require 2 repository secrets:

  • PRIVATE_KEY - a windows code signing pfx certificate encoded in base64 (use certutil -encode)
  • PRIVATE_KEY_PASSWORD - self explanatory

Debugging or Reporting Crashes

If you want to debug a problem or need to report a crash, follow the below instructions:

All messages from the driver are logged in the Windows Event Viewer.

  1. Open the Event Viewer
  2. Go to Windows Logs -> Application
  3. You will see logs for the driver under the source name VirtualDisplayDriver

If you want to make them easier to see

  1. right click on Custom Views
    • click Create Custom View...
      • select By source
      • find and select VirtualDisplayDriver in the list, then press Ok
      • type in VirtualDisplayDriver for the name, and press Ok
  2. You should now see any log messages under the Custom Views section for VirtualDisplayDriver

To see panic messages and other information in a live logger, download DebugViewPP, run it, click on Log->Capture Global Win32 (note, this requires DebugViewPP be run with admin permissions). As long as the program is open and capturing, the messages will appear live as they are logged. This is a bit easier to use than the event log when you are trying to debug something.

Contributions

All contributions are welcome! If you have any questions, feel free to post in the project Discussion section

More Repositories

1

Android-ImageMagick7

Fully featured, latest builds of imagemagick 7 for Android. Featuring a full build of very many libraries (delegates)
C
165
star
2

kmagick

Kotlin ImageMagick bindings to the MagickWand API
Kotlin
36
star
3

Yet-Another-BG3-Native-Mod-Loader

A mod loader for Baldur's Gate 3
Rust
18
star
4

stegcloak

[Rust] Hide secrets with invisible characters in plain text securely using passwords 🧙🏻‍♂️⭐
Rust
12
star
5

Native-Memory-Scripter

Easily edit process memory through dynamic scripts
Rust
11
star
6

VRChat_Keypad

A keypad built in Udon (UdonSharp)
C#
10
star
7

IntelliJ-Rust-Playground

IntelliJ plugin for running Rust code in local Playground
Kotlin
8
star
8

flp-plugins

Find out what plugins are in an flp
Rust
8
star
9

RustPlay

A desktop program for playing Rust scratch files
Rust
6
star
10

Native-Plugin-Template-Rust

A rust template for creating native dll plugins that edit game memory
Rust
6
star
11

WinPipes-rs

Windows named pipe library in Rust
Rust
3
star
12

Command-Prompt-Powerline

Powerline Support for good old Command Prompt!
Rust
3
star
13

anime-schedule-rs

Anime Schedule Api in Rust
Rust
3
star
14

youtube-server

A self contained portable youtube instance using Piped. All in one easy to use binary. Little knowledge needed to use, just run and use!
Rust
3
star
15

Yandere-Simulator-Skin-Switcher

A simple app to easily switch between different texture skins
Python
2
star
16

Cargo-RamDrive

How to set up cargo to use a ramdrive
Rust
2
star
17

async-instrumenter

A Rust library which allows one to easily instrument futures
Rust
1
star
18

mal-api-rs

A Rust MyAnimeList api
Rust
1
star
19

Native-Plugin-Lib

A library for native plugin development
Rust
1
star
20

ssl-ifier

Simple and fast transparent proxy to serve any http service over https
Rust
1
star
21

png-files-rs

Hide files inside PNG images, or retrieve them
Rust
1
star
22

TrunkBundler

Bundles/minifies/mangles your project code for Trunk
Rust
1
star
23

AnnoyingProcessKiller

Simple utility to watch for and kill processes that start up
Rust
1
star
24

Docker-Process-Isolation-Patcher

Automatically patch dockerd to use process isolation mode (it's better and faster)
Rust
1
star