[lug] X11 Protocol, migrating windows to remote displays

Michael J. Hammel mjhammel at graphics-muse.org
Sun May 18 22:09:22 MDT 2003


On Sun, 2003-05-18 at 20:10, D. Stimits wrote:
> It is this faking that I would like to do, but not from the original 
> application. I would like a second application to essentially hijack any 
> displayed widget, and proxy it to another host, without the original app 
> having any knowledge of it. For example, if you use KDE (and I think 
> Gnome) with multiple workspaces (view ports) on a single display, you 
> can right click on the title bar of a widget and it offers to let you 
> send the widget to another desktop...just another location on a virtual 
> desktop. I'd essentially be adding the ability to send it to an abstract 
> desktop that names not only the view ports of the current machine, but 
> also the view ports of the desktop on remote machines.

The view ports are a function of the window manager, which has special
privileges as an X client that no other clients have - only one window
manager at a time.  The exception is when you run XNest, which can then
have its own window manager within it, ad naseum.

> Problem with forking is that I have to rewrite every program. I'd like 
> to do things like open a browser on one machine (mozilla), and open the 
> email client, then move just the browser to a remote display. Or in a 
> software development IDE, to send the source code editor for one file to 
> one machine, and let the source code editor for a different file stay on 
> the local machine. Think of it as a poor man's Xinerama (pseudo-Xinerama 
> proxy), that supports redisplay not as drag-n-drop, but as 
> right-click-and-enter-display-specs. I have a second display on a second 
> machine with a fast network, but it has low cpu power on the second, and 
> all of the windows of the app have to work together on a single machine.

Xinerama is an extension to the X server, I think.  What you're asking
to do is move the functionality of an X server extension and/or the
function of a window manager into an ordinary client.  No can do, as far
as I know.  You need to write your own window manager, at a minimum, to
try and get this sort of function, and the window manager would probably
end up having to make use of the X server extension to do what you're
asking.

Dragging a client from display 1 to display 2 would have to be managed
by the window manager.  Moving a child window of the clients main window
from display 1 to display 2 requires reparenting the child window to the
root window of display 2 in order to get a different host machine. 
Can't do that externally from the application.  It would have to be done
from within the application as far as I know, if it can be done at all.

Some apps can swallow other apps (there is an X extension for that, I
think, or maybe its just a seldom used feature of X11R6 - its been quite
some time since I looked at it) but as far as I know they can only
swallow apps on the same host, not on remote hosts.

-- 
Michael J. Hammel                               The Graphics Muse 
mjhammel at graphics-muse.org                      http://www.graphics-muse.com
------------------------------------------------------------------------------
Approach love and cooking with reckless abandon.  
  --  Credited to the Dalai Lama.



More information about the LUG mailing list