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?"
Ok, so I suspect this isn't feasable, but I have two monitors set up with an ajoined desktop, and I can drag/send windows between different desktops.. so couldn't you map two different desktops to two different devices and just move things between them?
G
ALT-PrtScr...open up a new email in outlook, hit Ctrl-V, paste it in there....hit send...
It's better for troubleshooting, etc
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.
I think you should get a clue. You don't need to ducplicate a handle to switch windows about any more than you need to maintain pointers between saving and loading a file.
If it really is "mathematically impossible", then please provide the mathematical proof, which you have already claimed to be able to produce.
I can't quite make my mind up whether you really are completely clueless, or if you are just trolling. If you are trolling, congratulations, you've just proven how empty your life really is.
Saying something is impossible always sends up a red flag for me. Sometimes poeple say this because the problem is NP-complete, but they miss the idea of using aproximation algorithms that provide a solution that is good enough. In this case, you point out a valid technical problem, but then assume that there is no solution. In fact, there is a very simple solution for this sort of problem. Think of IP Masquarade, and then apply the concept to this situation--write a X11 proxy that changes the window IDs.
there is no reason to demand that the window be redirected with all resources unchanged. unique identifiers must be unique, but could be reassigned.
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.
Technically, we wouldn't have to move the wondow to a new desktop as long as we can display a picture of it. Chris Tyler is on the right track when he mentioned VNC because they do the exact same thing that you are saying is impossible. We would just need to scale it down to a single window instead of the desktop.
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
-TheDawgLives suckitdown
Isn't that what instant messaging is for?
.bombs to me.
You want a whole client server suite to do something
that netscape-remote and a few minutes of scripting would do? Just to save a mouseclick.....
Sounds like one of those hairbrained late 90's
shared browser
Hmmm. Interesting idea, and one I can honestly say I'd given no thought.
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.
Amateurs discuss tactics. Professionals discuss logistics.
Yup, what you describe is, I believe, exactly what Xinerama does.
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?
I wonder how hard it would be to hack xnest to allow the server to open a new window on a new display and close the old one. This would solve the problem.
For those who don't know xnest
It might be my imagination, but doesn't plan 9 support something like this?
There's always XMX - An X Protocol Multiplexor, but I couldn't get it to work when I tried it (though I didn't waste too much time). The only "fault" is that you must run your primary session through it if you want to later have windown appear on many desktops. Dunno about its overhead. I just use x0rfbserver when I'm in a bind.
The app(s) could be smart enough to clone the contents of the window on another display on request. It wouldn't be the same X connection (not literally the same window) but if it were identical and had all the same state, it would amount to the same thing. Obviously, you really want that integrated at a pretty low level (at the toolkit level or below), so individual apps didn't need to care, but it would be pretty easy to implement for an individual app at a higher level.
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, 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.
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
If you want a cross-platform solution, you have to forget about X. Basically, the source machine from which you want to export a window to a destination machine has to become the display server, and the destination machine becomes the display client. It seems the easiest solution would be to hack a custom VNC to make it window oriented, so that the client can display multiple individual windows from the server as if they were local windows. It would also be nice to add some browsing capabilities to be able to browse for destination machines, since the current VNC is quite spartan in this respect. Then again, you have to wonder if the user experience might not become too confusing, having some remote windows intermixed with local windows, and telling which is which. Perhaps the current desktop oriented VNC is good enough?
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).
How many things do you really want to share that don't have a URL? How about in a few years from now?
Send this screen to a friend..
Operator, give me the number for 911!
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!
Emacs used to have M-x set-display (or something like that) which changed the display for that session. I don't know for sure, but I suspect it simply unmapped itself and then mapped a new window on the new display with the old documents.
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.
"The cost of freedom is eternal vigilance." -Thomas Jefferson
The X Resize and Rotate Extension - RandR
See the section on Migration and Replication. Haven't looked at it lately. I wonder what the current status is.
I use VNC http://www.uk.research.att.com/vnc/ and x0rbfs http://www.hexonet.de/software.en/ server to export my :0 desktop out to any other computers, and all that is required is a java capable web browser. VNC is also truly cross-platform application, I can output my linux desktop to my palm over a wireless connection.
There is also a ton of other things you can use VNC for, such as application service providing.
Hope this is helpfule!
Everyone is entitled to their own opinion. It's just that yours is stupid.
Years and years ago (1989 or 1990? I know I was using it in 1990), some folks at HP Labs created an X server that shared and transferred windows among different hosts. It was called SharedX and became a product.
</p>
<p>
It was basically the hypothetical solutiond described by others: a virtual X server that allowed having the windows appear on multiple desktops. They went through a lot of agony to deal with different screen depths and worried about, but never solved, issues of gamma correction.
</p>
<p>
It was a joy to use. I could share individual windows with other people and selectively grant input control to them. Although moving windows wasn't a target feature, it was available as a side effect.
</p>
<p>
I searched for it recently and couldn't find any interesting web references.
</p>
M-x make-frame-on-display ... which creates a new frame (ie, window) on an X display. You can do this and then two folks can simultaneously edit the same file! Unfortunately, there is only one minibuffer, so some commands and editing styles are troublesome. But we used to do our homework this way; it's really fun...
Why couldn't you just run your X apps through a proxy first that then connects to your X server, and anyone else's X server that might want to see it. If you want all the sessions to run independently of each other then just clone each program and let the proxy deal with the rest.
So who stole Matrox's Top Secret(tm) plans for their next video card?
Need help treating your acne? Come here!
You mention the interfaces in Minority Report...
That stuff was done by this guy. His non-movie work is perhaps even cooler,
given the constraints of building things that actually work:
Luminous Room
On the other hand, I imagine your life is full and meaningful - for a hooked fish.
YHBT, YHL, HAND
http://www.xfree86.org/~keithp/talks/randr/randr/
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.
Let's hope that there's intelligent life somewhere out in space 'Cause there's bugger-all down here on Earth.
Everything old is new again.
t.
Netmeeting has a remote window/desktop feature. It can let people in a meeting give control of applications running on their computer to other people. So, you can show your boss an excel chart, he may change the graph types, modify values etc... All as if the application were running locally.
- mritunjai
xwatchwin lets you see what is being displayed in a window on a remote X server. It doesn't let you interact or move the window, and the display isn't perfect, but it does work and it doesn't need you to set up a proxy beforehand.
"Make VNC windows oriented" ...Good idea, and the first one to suggest a decent, workable, solution.
What are the moderators thinking... giving this post a 2, but giving the weak post on 'URLs' above a 4?!
But I don't have a unifrom! I can't locate any resources on it.
Learn to proofread.
As a follow up on my earlier post, it seems you may be slightly misguided as to what VNC can do on an X windows system. It is simple to serve a single window from VNC, you just add what you want to run in your ~/.vnc/xstartup script.
Ex. I have wine serving MS Word, with jus this in my xstartup
#!/bin/bash
wine office.exe
Simple as that. However the Windows version is not nearly as agile. That's due to the lack of hooks supported by windows' sub standard GUI. So if you want to use windows, you're gonna have to go with a sub standard application such as citrix. Be prepared to shell out.
Everyone is entitled to their own opinion. It's just that yours is stupid.
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?