explaingit

beverdam/sunshine-ghost-monitor

Analysis updated 2026-05-18

0ShellAudience · ops devopsComplexity · 4/5Setup · hard

TLDR

This script forces a fake virtual display on Linux so Sunshine can keep streaming even after the real monitor is turned off.

Mindmap

mindmap
  root((Sunshine Virtual Display))
    What it does
      Clones monitor EDID
      Forces GPU connector on
      Keeps Sunshine capturing
    Tech stack
      Shell script
      mkinitcpio
      DRM and KMS
    Use cases
      Stream with monitor off
      Avoid dummy HDMI plug
      Switch virtual output port
    Audience
      Ops and sysadmins
      Linux gamers
    Requirements
      CachyOS or Arch
      Sunshine installed
      Root privileges

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Keep Sunshine streaming a display after turning off the physical monitor.

USE CASE 2

Avoid buying a hardware dummy HDMI plug for headless game streaming.

USE CASE 3

Clone a real monitor's EDID onto an unused graphics connector.

USE CASE 4

Switch which graphics port hosts the forced virtual display.

What is it built with?

ShellLinuxmkinitcpioDRM/KMS

How does it compare?

beverdam/sunshine-ghost-monitor123satyajeet123/bitnet-serveralexbloch-ia/legal-data
Stars000
LanguageShellShellShell
Setup difficultyhardeasymoderate
Complexity4/52/52/5
Audienceops devopsdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Modifies boot loader and kernel parameters, mistakes can require recovery from a text console.

The README shown does not state a license.

In plain English

This project is a shell script for CachyOS and other Arch based Linux systems that lets Sunshine, a game streaming server, keep capturing a display even after the physical monitor is turned off or unplugged. Normally a video card will stop outputting a signal once it detects no monitor is connected, which breaks streaming setups. Instead of requiring a physical dummy HDMI plug, this script fakes a connected monitor at the operating system level. It works by copying the EDID, a small block of data a monitor sends describing its supported resolutions, from a real connected monitor. It saves that data as a firmware file, adds it to the system's boot image, and sets kernel parameters that force an unused graphics connector to report as enabled. This means the real monitor can be turned off, put to sleep, or unplugged after boot without the forced virtual connector losing its signal, so Sunshine keeps capturing normally. The README states this behavior is confirmed reliable on the open source AMD graphics driver, and notes that Nvidia's proprietary driver has historically been less consistent with this trick. The script requires an Arch based system using the mkinitcpio boot image tool rather than dracut, Sunshine already installed, at least one real monitor connected during setup, and an unused graphics connector to repurpose as the virtual display. It must be run with root privileges for installing, switching connectors, or uninstalling. Usage is command line based: a diagnose command lists available graphics connectors and whether each has readable monitor data, an install command clones the chosen monitor's data onto the chosen unused connector, and there are commands to switch which connector is used, check current status, uninstall the setup, and print helper information for configuring Sunshine itself. A dry run mode is available before making real changes, and the script keeps timestamped backups of any configuration file it edits. The README includes a strong disclaimer: this script modifies boot loader and kernel boot parameters, and mistakes can result in a black screen or a broken display setup requiring recovery from a text console. It recommends reading the script, testing with dry run first, and understanding how to undo the changes before using it on a machine that matters.

Copy-paste prompts

Prompt 1
Walk me through using this script to set up a virtual display for Sunshine on CachyOS.
Prompt 2
Explain what an EDID is and why cloning one lets Sunshine keep streaming.
Prompt 3
Show me how to safely test this script with dry run before installing it for real.
Prompt 4
Help me undo this script's changes if my display setup breaks after install.

Frequently asked questions

What is sunshine-ghost-monitor?

This script forces a fake virtual display on Linux so Sunshine can keep streaming even after the real monitor is turned off.

What language is sunshine-ghost-monitor written in?

Mainly Shell. The stack also includes Shell, Linux, mkinitcpio.

What license does sunshine-ghost-monitor use?

The README shown does not state a license.

How hard is sunshine-ghost-monitor to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is sunshine-ghost-monitor for?

Mainly ops devops.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.