Xdummy
is used with seamless and desktop servers sessions on posix
platforms.
Xdummy
was originally developed by Karl Runge as a script to allow a
standard X11 server to be used by non-root users with the dummy video
driver
Since then, the X11 server gained the ability to run without those
LD_SO_PRELOAD
hacks and this is now available for most
distributions.
Xdummy
instead of Xvfb
?Xvfb
lacks the ability to simulate arbitrary DPI values and add or remove virtual
monitors at runtime.
This affects some X11 application's geometry and font rendering, and
prevents the use of the monitor
subcommand.
You can start a new display using the dummy driver without needing any special privileges (no root, no suid), you should specify your own log and config files:
Xorg -noreset +extension GLX +extension RANDR +extension RENDER \
-logfile ./10.log -config /etc/xpra/xorg.conf :10
This is roughly equivallent to running Xvfb :10
.
You can find a sample configuration file for dummy here: xorg.conf.
With Xpra, this should have been configured automatically for you
when installing - this is not enabled on Debian or Ubuntu.
You choose at build time whether or
not to use Xdummy
using the --with[out]-Xdummy
build switch.
If your packages do not enable Xdummy
by default, you may
be able to switch to it by modifying the xvfb
value in
/etc/xpra/conf.d/55_server_x11.conf
, something like:
xvfb=Xorg -dpi 96 -noreset -nolisten tcp \
+extension GLX +extension RANDR +extension RENDER \
-logfile ${HOME}/.xpra/Xvfb-10.log -config ${HOME}/xorg.conf
The -noreset
option is only needed if the window manager
is not the first application started on the display, for example if you
use the --start-child=
option, or if you want the display
to survive once the window manager exits - generally, this is a good
idea since xpra could crash and when it exits cleanly via
xpra stop
it already takes care of shutting down the X11
server.
By default the configuration file shipped with xpra allocates 768MB
of memory, and a maximum virtual size
of
11520 6318
.
You may want to increase these values to use very high resolutions or
many virtual monitors.
Most recent distributions now ship compatible packages:
Xorg
version 1.12 or laterdummy
driver version 0.3.5 or laterStarting with dummy version 0.4.0, only one optional patch is added to the version found in the xpra repositories: https://github.com/Xpra-org/xpra/blob/master/packaging/rpm/patches/0006-Dummy-Disconnect.patch
With older distributions that do not use libglvnd, proprietary
drivers usually install their own copy of libGL
which
conflicts with the use of software OpenGL rendering. You cannot use this
GL library to render directly on Xdummy
(or
Xvfb
).
The best way to deal with this is to use VirtualGL to take advantage of the
OpenGL
acceleration provided by the graphics card, just
run: vglrun yourapplication
.
To make vglrun
work properly with Nvidia proprietary
drivers make sure to create /etc/X11/xorg.conf
using
sudo nvidia-xconfig
.
The alternative is often to disable OpenGL
altogether,
more information here: #580
Debian and Ubuntu do weird things with their Xorg server which
prevents it from running Xdummy (tty permission issues).
Warning: this may also interfere with other sessions running on the same
server when they should be completely isolated from each other.
Crashing other
X11 sessions is a serious security issue, caused by Debian's
packaging and still left unsolved after many years.
If you distribution ships the newer version but only installs a suid Xorg binary, Xpra should have installed the xpra_Xdummy wrapper script and configured xpra.conf to use it instead of the regular Xorg binary.
This script executes Xorg
via ld-linux.so
,
which takes care of stripping the suid bit.
Some more exotic distributions have issues with non world-readable
binaries which prevent this from working.