Xvfb
# Xvfb

X Window Virtual Framebuffer (abgekürzt Xvfb) ist ein X-Server, der einen virtuellen Framebuffer verwendet und keinen physischen Screen (z. B. einen Bildschirm) besitzt. Aus der Sicht eines X-Clients funktioniert ein Xvfb-Server wie jeder andere X-Server, jedoch werden seine Framebuffer-Ausgaben über keine Grafikkarte oder vergleichbares für einen Computerbenutzer sichtbar gemacht, sondern existieren nur virtuell, im Arbeitsspeicher des Server-Computers. Xvfb haben daher üblicherweise auch keine Eingabegeräte wie Mäuse oder Tastaturen, über die sie mit einem Benutzer interagieren könnten.

## Anwendungsgebiete

Xvfb wurde ursprünglich zum Testen genutzt. Da er als Implementierung eines X-Servers die Kernelemente eines solchen verwendet, kann man Xvfb zum Beispiel benutzen, um Teile des X-Servers zu testen, die nicht unmittelbar mit der Hardware zusammenhängen. Andere Verwendungszwecke waren das Testen von seltenen Arbeitsumgebungen wie Arbeitsstationen mit Farbtiefen, die nur von wenigen Monitoren unterstützt werden, und ähnliches.

### Abwandlungen des Konzepts

Mittlerweile hat sich das Anwendungsgebiet stark erweitert. Auf dem Konzept des virtuellen Framebuffers aufbauend, haben sich zahlreiche Server entwickelt, die genauso nicht direkt eine Arbeitsstation bedienen, sondern verschachtelt in anderen Anwendungen oder zur Implementierung anderer Remote-Desktop-Protokolle dienen. Bei Xvnc sowie Xrdp handelt es sich um solche X-Server, die zugleich einen VNC- bzw. RDP-Server darstellen.
Xnest hingegen ist ein auf Xvfb aufbauender X-Server, der in einem Fenster als X-Client in einem anderen X-Server laufen kann. Auf diese Weise erscheint der „virtuelle“ Bildschirm verschachtelt in einem anderen Bildschirm. Einen ähnlichen Ansatz verfolgt Xdmx, dabei handelt es sich um einen X-Server, der sich als X-Client an mehreren anderen X-Servern anmelden kann und so einen virtuellen großen Screen erzeugt, der über mehrere reale Bildschirme gehen kann und zum Beispiel mittels Xinerama zu einem großen Desktop zusammengesetzt werden kann. Auf diese Weise sind Videowände mit vielen dutzend Monitoren möglich, die scheinbar von einem einzelnen Computer gesteuert werden, in Wirklichkeit aber von vielen Computern mit vielen X-Servern zusammengestellt werden, die über einen zentralen Xdmx-Server angesprochen werden.

### Erzeugen von Screenshots

Oft wird Xvfb jedoch auch noch in seiner ursprünglichen Variante genutzt, zum Beispiel um Programme laufen zu lassen, die einen X-Server zur (korrekten) Funktion brauchen, ohne dass man jedoch deren Ausgaben oder Interaktion benötigt. Hat man dennoch Interesse daran, können sie mit Screenshot-Programmen wie xwd abgefangen werden. Auf diese Weise werden beispielsweise in großem Umfang Screenshots von Webseiten auf beliebigen Bildschirmgrößen gemacht. Das folgende Beispiel erzeugt einen solchen Screenshot von einem Programm im virtuellen Framebuffer: