Dynamic GUI Window Redirection?
Chris Tyler asks: "Picture this: you're sitting on the couch surfing on your tablet. You find something interesting (or funny or informative), so you say, "Hey! Look at this!" and send the window to the video projector shining on one of your walls. Or you are surfing for a hotel reservation and want to show it to your spouse before you click on 'book it'. Or you're viewing a report on your PC and the captain orders, 'on viewscreen!' With viable tablet PCs inching ever so slowly towards market, 802.11b an established technology, and more programmable pixels blinking at us then ever before, redirection capability for GUI windows will become a more and more desirable feature. X11 has some great network capabilities, but doesn't easily send to multiple displays or enable a window to be switched between displays. VNC is cross-platform and does permit disconnect/reconnect, connection initiation from either end, colourdepth mapping, and multiple views of the same desktop, but it is desktop-oriented (as opposed to window-oriented) in most implementations. Are there any good solutions for dynamic window redirection? What features would a good redirection solution include?"
This is a great idea. It would be wonderful if X were designed to allow applications to dynamically change their display setting, or even talk to more than one X server at once.
In most cases, it would simply be a matter of hacking the X library to allow you to close the connection to the server and open a new one (presumably to a different server). There might be some issues with having your resources suddenly change (you know, the stuff in places like ~/.Xdefaults). There might be a lot of issues of font support being different on the other server. There might be issues of assumptions that the server knows what windows you already have open. And it doesn't let you display on two servers at once.
With the current architecture of X, probably the best solution is a vnc-like virtual X server. This would be what your applications talk to, and it would open connections to zero or more real X servers. (No reason to require a real X server all the time, is there?) This is very similar to VNC, except that it's done on a per-window basis and talks X protocol to the real display server. Now we just need someone to write it.
Essentially all you're showing is information, and since the information will be available to all devices all that is needed is an appropiate viewer on the target device and a 'pointer' to that information.
Enter the unifrom resource locator, a new invention of mine. All you need to send is this nifty string, and the target device will not only get the information, but it'll start an appropiate viewer for it. I'm selling them cheap, too. You can buy a hundred of these bad boys for a mere penny. There are greater discounts in quantity, but please be aware that the license requires payment for each transmitted URL (ie, it's not royalty free once you buy one URL)
Seriously, this problem has been solved, though the actual mechanics of it needs to be smoothed over.
For those thinking, "Duh, but it only works for web pages." slap yourself silly. A Uniform Resource Locator is exactly that, whether it's pointing to a server, a jpeg, an html file, any kind of document, or a port on your system which has a video stream coming from it. They can point to programs, current X sessions, windows, processes, etc.
Let's not go reinventing the wheel, ok? Good.
-Adam
There is a patch out there for sharing a single window (only works with the windows server right now) for TightVNC. I believe that the maintainer of tightvnc plans to integrate this functionality in the future (based on a posting to the tightvnc mailing list).
From the man page:
NAME
xmove - pseudoserver to support mobile X11 clients
SYNOPSIS
xmove [ -server server_name:port ] [ -port listen_port ]
DESCRIPTION
xmove starts a pseudoserver which allows its X11 clients
to be relocated from one display to another. Upon startup
it will create a listening port from which it accepts new
client connections. All such clients will be displayed on
the default server, until moved elsewhere. Several
clients may connect through a single xmove, thus requiring
only one per machine.
-- Don't Tase me, bro!
Everything old is new again.
t.