如何从Linux下的程序转发X窗口输出(Debian Lenny)?有任何建议和/或经验吗?
最简单的方法是使用新的DISPLAY环境变量重新启动进程,但我根本不想删除该进程。我想要的是“动态地”将X输出更改为另一台机器......
显然有一些“X代理”可以为我做到这一点,但我没有任何经验,谷歌也没有给我一个快速的解决方案。
[编辑]澄清:我不想转发完整的桌面(使用VNC或类似),我也不想转发一个窗口。我想转发某个进程的所有输出,而不重新启动进程。[/ edit]
答案 0 :(得分:2)
我认为不可能在飞行中...... 但是你可以使用VNC来查看机器上的wats。
不是动态,但本教程可能有所帮助:http://www.vanemery.com/Linux/XoverSSH/X-over-SSH2.html
答案 1 :(得分:2)
您的程序已经与X服务器建立了套接字连接(可能是unix域套接字,可能是tcp / ip套接字)。一旦打开,就无法将该套接字连接重定向到其他位置。
也许有一些代理可以放在客户端和服务器之间(从一开始就是中间),它将重定向到另一台服务器,但它将如何创建在一台服务器上的任何X对象新服务器?对于之前发生的事情,它必须非常聪明,并将通过套接字传递的每个X命令重播到新服务器。
答案 2 :(得分:2)
ssh -Y user@server
-Y部分将ssh发送到隧道X,所以当我从客户端启动某个程序时,它将显示在我的屏幕上。缺点是客户端必须安装X(可行但在Windows上不实用)并且它仅适用于从客户端启动的程序,您无法连接现有的视频输出。
考虑到您的编辑,您需要查看已启动过程的视频输出,这种方法显然不适合您。
答案 3 :(得分:2)
答案 4 :(得分:1)
由于到目前为止没有给出答案,只有建议做其他事情,我想我会回答我自己的问题。 : - )
最接近我能做的就是在Linux上使用x11vnc(作为X服务器),在Windows上使用Ultra VNC作为客户端。可能还有其他VNC客户端也支持连接到单个窗口,但我发现Ultra VNC并且停止了查看。
x11vnc和Ultra VNC都支持仅转发单个窗口的协议。有一些配置要做,它只会转发一个窗口,而不是从同一个进程创建的任何新窗口。弹出窗口和拨号窗口可能会导致问题,因为它们可能会显示在桌面的非转发部分或只是在原始窗口的顶部显示一部分...
这是迄今为止我发现的最不好的解决方案。