Skip to content
Drivers · Display · Streaming

Linux Virtual Display Driver

Add a monitor that isn't there.

LinuxLinux Free
Skip to get Linux Virtual Display Driver

Real capture · github.com · Sept 2026 The whole project is Python and shell script. No kernel code, nothing to compile.

Overview

Linux Virtual Display Driver adds virtual monitors to Linux desktops running X11. It is a small native GTK3 app, written in Python, that finds an output your graphics driver exposes but isn't using and switches it on at the resolution and refresh rate you choose, so VR apps, OBS, Sunshine and screen-sharing tools see one more monitor.

It works through xrandr with its own VESA CVT modeline code, so there is no kernel module to build. AMD and Intel GPUs work straight away; NVIDIA needs a guided one-time setup that writes a small Xorg config and a virtual EDID, followed by a fresh login. Each display can sit left, right, above or below an existing screen or mirror it, and your displays are remembered between sessions.

Version 1.0.0 runs straight from source or installs system-wide with the included script, which supports apt, pacman, dnf and zypper. It is free under GPLv3 for personal and non-commercial use; commercial use needs a separate licence.

Highlights

  • Create virtual displays at any resolution and refresh rate
  • Ten resolution presets from 1280 x 720 to 5120 x 1440; 30-240 Hz presets
  • Optional CVT reduced blanking for lower bandwidth
  • Place displays left, right, above or below a monitor, or mirror it
  • AMD and Intel need no setup; NVIDIA gets a guided one-time setup
  • Remembers your displays between sessions
  • On GDM systems, keeps the login screen on your physical display
  • Optional system-wide install with a linux-vdd command and app-menu entry

Details

Platforms
Linux
Version
v1.0.0
First released
December 2024 (as a script); GTK3 app from March 2026
Last commit
Mar 2026
GitHub stars
122 (as of Oct 2026)
Built with
Python, GTK3 (PyGObject) and xrandr
License
Personal use · commercial licence separate
Status
Available
Requirements
An X11 (Xorg) session, Python 3.10 or newer, PyGObject (GTK3) and xrandr. Your password (pkexec) is asked for only when it writes system files.

Questions

Does it work on Wayland?

No. It needs an X11 (Xorg) session because every step goes through xrandr.

Why does NVIDIA need a restart?

NVIDIA's proprietary driver won't add modes to disconnected outputs while X is running, so the app writes /etc/X11/xorg.conf.d/99-linux-vdd.conf and a virtual EDID; log out and back in once, then new displays appear instantly.

The app says there are no available outputs.

On NVIDIA run the Setup Virtual Outputs flow; on Intel look for VIRTUAL1/VIRTUAL2; on any GPU you can install xf86-video-dummy or load the evdi kernel module.

Is it free?

Yes for personal, educational and non-commercial use under GPLv3. Commercial use needs a separate licence from VirtualDrivers.

How do I remove it?

Use Menu > Remove NVIDIA Config (then restart your session) if you ran the NVIDIA setup, and sudo ./uninstall.sh for a system-wide install. The uninstaller keeps your saved displays in ~/.config/linux-vdd/ until you delete that folder.

Which Python version do I need?

Python 3.10 or newer. The README still lists 3.8+, but the current code does not run on 3.8 or 3.9.

Will my login screen end up on the virtual display?

On systems with GDM the app writes the login screen's monitors.xml so the greeter stays on your physical display. Other display managers are not changed.

Arrow keys move through the results, Enter opens one, Command or Control with Enter opens it in a new tab. Tab and Shift+Tab change which kind of results are shown.