Xnest ist ein X Window System-Server, der sein Display direkt in einem Fenster eines bestehenden X-Servers darstellt. Das Programm ist damit sowohl ein X-Server zu seinen eigenen Programmen als auch ein X-Client zu dem X-Server, wo er verschachtelt ist (engl. nested: gebettet, verschachtelt).
Inhaltsverzeichnis |
Xnest ist eine Art "Erweiterung" des Xvfb. Es stellt also einen virtuellen Framebuffer zur Verfügung, der jedoch auf den realen Framebuffer, den Xnest dadurch erhält, dass es selbst ein Client an einem bestehenden X-Server mit Framebuffer ist, gemappt wird. Xnest selbst hat also keinerlei eigene Ausgabehardware oder physikalische (existierende) Inputdevices. Alle Eingaben erhält es über den X-Server, an den es gebunden ist.
Wenn ein Benutzer eine X-Sitzung an dem Display :0 laufen hat, kann er zum Beispiel mittels Eingabe von Xnest :1 in einen Terminalemulator, zum Beispiel xterm, einen solchen nested X-Server starten. Standardmäßig hat dieser dreiviertel der Größe der Abmessungen des "väterlichen" Displays. Hat der Benutzer also eine Bildschirmauflösung von 1024*768 Pixeln, startet Xnest mit Standardeinstellungen mit einer Auflösung von 800*600 Pixeln. Falls eine andere Auflösung gewünscht ist, an diese mit dem Anhängen von: -geometry 'Breite'x'Höhe', zum Beispiel -geometry 1024x600, ausgewählt werden.
Mit Xnest kann man sehr bequem mehrere X-Sitzungen gleichzeitig starten, Programme mit unterschiedlicher Bildschirmauflösung oder zum Debugging des X Window Systems testen. Mittels XDMCP kann Xnest auch ähnlich wie VNC genutzt werden: Um einen "Virtuellen Desktop" zu einem anderen Computer in einem Fenster herzustellen. Das geht zum Beispiel, in dem dem vorherigen Beispiel einfach ein Parameter angehängt wird: Xnest :1 -query name-des-anderen-computers.
Es existiert auch ein ähnliches Projekt namens Xephyr, welches die Schwächen von Xnest versucht, auszubessern. Xephyr unterstützt z.B. mehr Erweiterungen, sodass sich ein Xephyr-Desktop z.B. im laufenden Betrieb in der Größe verändern lässt (RANDR-Extension).