I have multiple displays open on a central server. Is it possible to "move" a X-window application that is running on a particular
DISPLAY to a different
DISPLAY? How can this be done?
xpra with multiple remote displays.
It isn’t possible to move a running X window application to a different display, as determined by the
DISPLAY variable, for two reasons.
The first is that it’s difficult to change a running process’ environment, and impossible to do it reliably and in such a way that the change is taken into account.
The second is that the
DISPLAY variable is only an input, and typically it’s only considered at application startup. An X application calls
XOpenDisplay early in its startup, directly or indirectly, and that (or rather,
XTOpenDisplay) is what takes
DISPLAY into account (if necessary — the X server to use can be specified in other ways).
XOpenDisplay returns a pointer to an opaque
Display structure which represents the connection to the X server, and that’s all that’s used to talk to the X server thereafter. Changing the value of
DISPLAY after this won’t have any effect; the application would somehow have to realise that the value has changed, close its connection to the X server, and open a new one.
Both points taken together means that it’s very difficult even to write an application which can change its display (because it’s designed to do so), let alone change the display when an application doesn’t expect it to.