X11 转发 - 抓取已在运行的程序的窗口

X11 转发 - 抓取已在运行的程序的窗口

如果我通过 ssh 进入一台机器,只要启用 X11 转发,我就可以运行图形应用程序 - 我gedit从命令行运行,然后 gedit 会弹出一个窗口。我的问题是:有没有办法让已在运行的应用程序弹出一个窗口?

示例:假设我有两台机器,A 和 B。我在 A 上打开 gedit,输入并some text离开。然后我从 B ssh 进入 A。如果我运行,gedit我只会生成另一个进程。我可以访问已经运行的 gedit 进程吗(使用some text)?或者这是 vnc 的工作?

答案1

这并不是真正意义上的“抓取已在运行的程序的窗口”的解决方案,但仍然......

使用xpra

在 X11 上,它也被称为 X11 的屏幕:它允许您运行程序(通常在远程主机上),将其显示直接发送到本地计算机,然后断开与这些程序的连接并从同一台或另一台计算机重新连接,而不会丢失任何状态。

[…]

Xpra 还允许转发声音、剪贴板和打印服务。会话可以通过 SSH 访问,或通过带或不带 SSL 的普通 TCP 套接字进行密码保护。

必须事先安装、配置和启动它,就像控制台应用程序screen一样tmux。您必须xpra首先通过 运行程序,然后才能从不同的机器进行(重新)连接。

xpra至少在 Debian 和 Ubuntu 中以软件包形式提供xpra。我用过几次。性能比普通的 X 转发更好。

例如这里。以下内容取自man xpra我的 Kubuntu:

xpra start :7

xpra使用显示号启动服务器:7

DISPLAY=:7 firefox

在服务器内开始firefox运行。在启动的xpra主机上或通过 转发的终端上运行此程序。除非您使用 附加,否则不会出现任何窗口。xpraxpraxpra attach

你在 A 上运行上述示例。然后你可以直接从 A 连接:

xpra attach :7

连接到xpra使用本地显示号的服务器:7。该服务器上运行的任何应用程序都将出现在您的屏幕上。

或者从你的 B:

xpra attach ssh:foo@frodo:7

使用以用户身份ssh连接到xpra计算机上运行的服务器并使用 display 。该服务器上运行的任何应用程序都将出现在您的本地屏幕上。frodofoo:7

相关内容