1

如何转发 Linux (Debian Lenny) 下程序的 X 窗口输出?有什么建议和/或经验吗?

最简单的方法是使用新的 DISPLAY 环境变量重新启动该进程,但我根本不想取消该进程。我想要的是“即时”将 X 输出更改为另一台机器......

显然有一些“X 代理”可以为我做到这一点,但我在这方面没有任何经验,谷歌也不能给我一个快速的解决方案。

[编辑]澄清:我不想转发整个桌面(使用 VNC 或类似的)我也不想只转发一个窗口。我想转发某个进程的所有输出,而不重新启动该进程。[/edit]

4

5 回答 5

2

我认为这在飞行中是不可能的……但是您可以使用 VNC 来查看机器上正在发生的事情。

不是即时的,但本教程可能会有所帮助:http ://www.vanemery.com/Linux/XoverSSH/X-over-SSH2.html

于 2009-01-28T16:46:12.680 回答
2

您的程序与 X 服务器建立了一个套接字连接(可能是一个 unix 域套接字,也可能是一个 tcp/ip 套接字)。一旦打开,就无法将该套接字连接重定向到其他地方。

也许您可以在客户端和服务器之间放置一些代理(从一开始就),它将重定向到不同的服务器,但是它将如何在新服务器上的一个服务器上创建任何 X 对象?它必须非常聪明地处理之前发生的事情,并将通过套接字传来的每个 X 命令重播到新服务器。

于 2009-01-28T16:54:17.793 回答
2
ssh -Y user@server

-Y 部分 telssh 到隧道 X,所以当我从客户端启动一些程序时,它将显示在我的屏幕上。缺点是客户端必须安装 X(在 Windows 上可行但不实用),它仅适用于您从客户端启动的程序,您无法连接现有的视频输出。

考虑到您的编辑,您需要查看已启动过程的视频输出,这种方法显然对您不利。

于 2009-01-28T18:48:34.430 回答
2

听起来像是xmove的工作。它在 Debian中(尽管不幸的是 Lenny 似乎缺少它;也许 sid 版本可以工作?)和Ubuntu

于 2009-02-16T13:57:35.940 回答
1

由于到目前为止没有给出答案,只有建议做其他事情,我想我会回答我自己的问题。:-)

我能做的最接近的事情是在 Linux 上使用 x11vnc(作为 X 服务器)和 Ultra VNC 作为 Windows 上的客户端。可能还有其他 VNC 客户端也支持连接到单个窗口,但我找到了 Ultra VNC 并停止查找。

x11vnc 和 Ultra VNC 都获得了仅转发单个窗口的协议支持。需要做一些配置,它只会转发一个窗口,而不是从同一进程创建的任何新窗口。弹出窗口和对话窗口可能会导致问题,因为它们可能会显示在桌面的未转发部分或仅显示原始窗口顶部的一部分...

这是迄今为止我发现的最不坏的解决方案。

于 2009-02-16T13:14:10.210 回答