Xvfb (fake X11) Linux without display

Some programs simply cannot run without an X11 graphics server available. In other cases, testing a program requires X11 to be available, even though the windows aren’t visible. An example is creating Matplotlib figures in a continuous integration environment.

The X server virtual framebuffer (Xvfb) allows creating non-visible desktop windows without the computation burden of an full X11 graphics environment.

Xvfb is effective for most Linux systems without displays, particularly for headless or embedded systems including:

  • Raspberry Pi
  • Windows Subsystem for Linux
  • continous integration servers
  • virtual machines
apt install xvfb

Add to ~/.profile

Xvfb :99 &
export DISPLAY=:99

Upon opening a new Terminal or SSH connection, the X11 virtual framebuffer is available.

Test XVFB by running a graphics-only program, for example:

xmessage -center "Hello World"

If XVFB or X11 isn’t working, the message will be like

Error: Can't open display: :0.0