Dynamic GUI Window Redirection? 51
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?"
Still possible (Score:2)
Re:Mathematically impossible (Score:1)
since we probably just want it to be the same from the user's perspective, there is nothing preventing this and it sounds (to me) just like how I run individual programs from the Solaris machines across my school's network and display them on my personal machines. The only problem I see with X is sending one window to multiple displays, but nothing makes that technically more difficult, it just requires extending the functionality already present in X.
Re:Mathematically impossible (Score:1)
There are X programs that will take a screenshot of a window instead of the whole screen, why can't we apply something like that to this situation.
Great inventors have always forged on when others said it was "Mathematically impossible" (The Wright Brothers for example). Remember, there are no stupid questions only stupid answers
Re:Mathematically impossible (Score:1)
Re:Mathematically impossible (Score:1)
Whoa, easy there, fella. I know you're a Linux god and all, but a lot of us out here reading Slashdot aren't. We don't know how X11 handles the Windows IDs. This is good information, but it's not a point to berate people over. Rather, it's a flaw in the system that needs correcting to attain an awesome OS that everyone wants to use.
Having recently seen Minority Report [imdb.com], I can see what's being looked for. The way Anderton (Tom Cruise's character) moved from machine to machine, dragging visual representations of the data he was working on to small holographic plates was definitely a cool and intuitive way to move around in a computer.
You want this data somewhere? Drag it to a 'disk' then drag it off the disk. What could be simpler?
Now, I know we're quite a ways away from holographic interfaces of the scale in the movie, and probably will never see something exactly like that (after all it's a movie, it's not real), but the next best thing would be sending the window we're working on to another display via some easier method than saving, and reopening it elsewhere. You want the display to show exactly what you were working on; no scrolling to find the exact place in that website/document you were looking at. This helps keep a continuity of thought going or allows you to show more people what you're doing easily.
As I said, this highlights a flaw in the XWindows system, as moving what the user considers an object (the browser window in it's current state) from one machine to the next seems natural. Rather than a critical view of the poster's ignorance on the subject, how about a description of how it can be done, and what changes will need to be made to the OS to allow this to be possible. If I'm not mistaken, that was kind of the whole point of Linux being open source; it allows you to make modifications to it to make it better.
Rather than an attitude of "It's impossible, you're stupid," wouldn't it be better to take the view of "It's impossible with the way it works now, but it could happen if..." I see nothing but progress happening with that statement.
Minority Report Interfaces (Score:2, Interesting)
That stuff was done by this guy [google.com]. His non-movie work is perhaps even cooler,
given the constraints of building things that actually work:
Luminous Room [mit.edu]
Re:Mathematically impossible (Score:3, Informative)
Everything old is new again.
t.
Re:Mathematically impossible (Score:1)
There's something to be said for the sneaker-net. That's how people think, and how people work. People like to 'carry' around their stuff, because that's how we work with everything else. Why not data too?
Possible Solution? (Score:2, Interesting)
G
Xinerama (Score:2)
I don't think it allows you to move windows between arbitrary X displays, but it's a step in the right direction.
Perhaps someone more familiar with Xinerama could say something intelligent about it?
Here's what I do... (Score:2, Funny)
It's better for troubleshooting, etc
Indirection (Score:4, Interesting)
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.
Re:Indirection (Score:1)
(I believe the xemacs command is something like "make-frame-on-display", but I don't remember it exactly.)
Re:Indirection (Score:1)
For changing "display settings", an application can use any visual available. Of course, common "PC" display hardware won't let you run direct color and color-map in separate windows at the same time -- that would be a hardware limitation though, and not a software limitation.
Of course an application can talk to multiple X servers. Not many do, but this is NOT a defect of the X protocol.
As to moving an application from one X server to another -- this requires a bit more work. It is "doable". I would use something like Xnest as a base. The local applications would connect to the local X server, that would keep track of the applications screens. The local X server would then connect with a remote X server (as a client), reproducing the applications resources on the remote X server. This would also allow X applications to be "suspended" -- in a state where they are NOT connected to any remote servers, and yet are still running, ready to be connected to.
The local X server could also do multiplexing, allowing multiple input streams, and muxing output to a collection of remote X servers. I wouldn't implement that feature in "version 1", though.
Maybe something like this already exists?
Anyway, its not an issue with the X protocol itself...
Problems: Change of visual in moving from one remote X server to another. Eg. color-map visual moving to a monochrome X-Terminal.
Ratboy
Re:sheesh (Score:1)
Quite a new idea (Score:2)
Just sort of off the cuff, and in a Linux-based world, how about an extension to XFree86 (module, if you like) where you'd define additional screens and/or pointing devices for the wall viewer.
It could be kinda kludgy because it's just an extension of existing tech, but the viewtablet could be a new sort of X device itself. Think of it like an old Wacom digitizer but with video. Maybe you'd move the window to a virtual desktop that is wall-viewer-aware. You'd maintain joint control via the tablet or another form of pointing device.
Also, wouldn't it be more straightforward to extending X using the current device concepts (Screen, Input) for the new concepts? I'd think it would be possible to extend that to an eye-tracking mechanism and voice commands (see the Sun-produced movie "Starfire" -- http://www.asktog.com/starfire/starfireHome.html) so you could free yourself from mouse and keyboard actions as well.
I guess it doesn't sound so daunting after all. It seems like it's just a matter of having drivers and definitions for the new devices. I think I'm oversimplifying, though. It might be the wonderful Indian food I had for lunch... too many endorphins.
xnest hack? (Score:2)
For those who don't know xnest [xfree86.org]
Plan 9? (Score:1)
XMX - windown multiplexor (Score:1)
Essentially all you're showing is information... (Score:5, Insightful)
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
Something along the lines of VNC (Score:2)
Re:Something along the lines of VNC (Score:1)
X-Window servers exist on Windows (mostly non-free for Win), Mac OS X, Java, and the various unices. X-Windows can communicate over TCP/IP. I believe there's a project trying to redirect Windows GDI calls into X client calls. If this could intercept all GDI calls, Windows could display windows on a UNIX machine or any other machine with an X-server.
If VNC became window-oriented, wouldn't it be essentially the same thing as a stripped-down X (minus the features and bloat)?
Re:Something along the lines of VNC (Score:2)
Those would be X clients, not X servers. They allow you to view the remote desktop of a Unix machine running X, not the remote desktop of a Windows machine. Serving up a Windows desktop to a remote machine is a lot trickier since Windows doesn't provide much hinting regarding drawing requests of local clients. IOW, when an app requests a DC and each time it draws on it, you would like to be notified of the drawing primitives used (line, fill, text, brush etc.), so that you can echo the operation to the remote client. Alas, Windows won't tell you that. You would have to rewrite GDI32.DLL to hook yourself in at this level. What the VNC server does instead is to add a system hook dll into the process space of each running app, intercepting all incoming messages to the apps' windows and checking for certain operations (such as rectangle invalidations, PAINT, window movement and resize, etc), and using the appropriate coordinates to grab a rectangular bitmap, compress it, and send it to the remote client. The VNC server on Windows is entirely bitmap based, I believe, it mirrors no vector operations at all. The VNC server for X OTOH can intercept all X drawing operations, so it can echo a much leaner data stream. That's why viewing a remote Windows desktop is a lot slower than viewing an X desktop. And no, to my knowledge VNC does in no way use the X protocol, so your assertion that the VNC server is an X server is incorrect.
Re:Something along the lines of VNC (Score:1)
The confusing thing when talking about X is that the whole client-server system may seem backwards depending on your point of view. A more appropriate term might be "display server" (for X server) and "application" (for X client). To make matters worse, VNC seems like the opposite (client displays graphics, server sends graphics to client)
I would think that you could mirror a Windows display to X (client = Windows application, remote X-server = viewing screen), by copying bitmaps to a remote X server in the same way as VNC (but with explicitly defined windows and maybe even extensions like OpenGL rendering). It's probably not worth it unless there were an easier way to do this. By the way, there's a program called kvfb which mirrors a KDE desktop (running on a real X server) to VNC.
So I think X could be used like a more powerful version of VNC with accomodations like distinguishing individual windows. If VNC sent its bitmaps with window boundries as well, wouldn't it be essentially a simpler form of X? So I think the main advantage for VNC is a practical one (namely being cleaner and easier to implement).
A downside to X would be for non-window-oriented paradigms especially for embedded stuff, but it sounds like QNX's Photon doesn't mind (disclaimer: I have never used Photon remotely).
Re:Something along the lines of VNC (Score:1)
Mod parent up!!! (Score:1)
Single window sharing planned for TightVNC (Score:3, Informative)
The U in URL (Score:2)
Send this screen to a friend.. [mailto]
xmove can do this (Score:5, Informative)
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.
Re:xmove can do this (Score:1)
Re:xmove can do this (Score:2)
Re:xmove can do this (Score:1)
ftp://ftp.cs.columbia.edu/pub/xmove/
has it.
Emacs used to be able to do it (Score:2, Informative)
So in short, the X server doesn't seem to support it but an app can do it and maybe a window manager could fake it.
As others have said, VNC can allows multiple (simultaneous) clients.
emacs still has... (Score:2)
XFree86 RandR extension (Score:1)
See the section on Migration and Replication. Haven't looked at it lately. I wonder what the current status is.
This works for me (Score:1)
There is also a ton of other things you can use VNC for, such as application service providing.
Hope this is helpfule!
Re: (Score:2, Interesting)
Alriiiight (Score:1)
Keith Packard has some thoughts on the matter (Score:1)
He talks about the "Resize and Rotate" extension (not yet implemented) to help with a number of issues that have plagued X for a while, including resizing of the actual resolution (rather than the way a resolution change is currently handled) and has some thoughts on how this extension could help with migrating X clients between multiple servers.
Ever looked at NetMeeting ? (Score:1)
xwatchwin (Score:2, Informative)