# Linux Virtual Display Driver

> Add a monitor that isn't there.

Canonical page: https://pyrosoft.pro/software/linux-virtual-display-driver

Status: active
Platforms: Linux

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.

Price: Free.

## 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.

## Features

- 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

## How to get it

- [Source code](<https://git.pyrosoft.pro/virtualdrivers/drivers/linux-virtual-display-driver>)

## Recorded details

- Version: 1.0.0
- License: Personal use · commercial licence separate
- Updated: 2026-03-30
- First release: December 2024 (as a script); GTK3 app from March 2026
- Tech: Python, GTK3 (PyGObject) and xrandr

## Screenshots

![The public GitHub repository VirtualDrivers/Linux-Virtual-Display-Driver: a linux_vdd folder, LICENSE, README.md, install.sh, uninstall.sh and vdd.py, with an About panel that reads: Add virtual monitors to your Linux device! Works with VR, OBS, Sunshine, and/or any desktop sharing software.](https://pyrosoft.pro/store-assets/media/e13a07e7c3-960.webp)
![GitHub source view of linux_vdd/modeline.py: a CVT modeline generator that implements the VESA CVT v1.2 standard and produces modeline strings compatible with xrandr --newmode](https://pyrosoft.pro/store-assets/media/084519143d-960.webp)
![GitHub source view of the _nvidia_generate_conf function: an xorg.conf.d Device section for the nvidia driver with ConnectedMonitor, CustomEDID, ModeValidation and AllowEmptyInitialConfiguration options](https://pyrosoft.pro/linux-vdd/assets/source-nvidia-conf.jpg)

## 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.
