0

仅限 linux:我想为我的应用程序打开两个窗口,一个在计算机的主屏幕上,一个在只能由远程桌面访问的虚拟 X11 会话上。一些 X11 专家可以告诉我这是如何完成的吗?

4

4 回答 4

1

我对这个问题有点不清楚,但这是一个假设的设置:

我坐在我的电脑上(我们称之为根会话),我有一个外壳。在这种情况下,有一个值为“127.0.0.1:0.0”的环境变量 DISPLAY。

第二个会话开始。您需要知道这台机器上的显示变量是什么。如果它也在本地主机上,它可能类似于“127.0.0.1:1.0”。如果您在另一台主机上执行“echo $DISPLAY”,它会告诉您这一点。如果它报告“:1.0”或没有“127.0.0.1”的东西,那没关系。如果未指定地址,则隐含 localhost。

接下来,在返回根会话之前,您需要运行“xhost”以允许其他源在此主机上显示窗口。(免责声明:我要告诉您的操作非常不安全,因此如果您在不安全的网络上,您可能需要阅读 xhost 的手册页)。在另一个显示器上的 xterm 中键入“xhost +”。此命令(特别是“+”选项)允许任何主机在此显示器上弹出窗口。

那么你所要做的就是回到你的根会话shell并(我假设bash)运行“export DISPLAY =“127.0.0.1:1.0”。然后运行“xterm”,它应该会在另一个窗口中弹出窗口会议。

我希望这有帮助。

如果其中任何一个不清楚,您可以搜索“X windows DISPLAY variable”。

于 2009-05-31T03:50:15.593 回答
1

这取决于您正在编程的级别——如果您直接调用 Xlib,我想您知道第一个参数XCreateWindow是 a Display *,当然这就是您告诉 X11 在哪里创建窗口的方式。 http://tronche.com/gui/x/xlib/window/XCreateWindow.html了解详细信息,以防万一。

如果您使用的是其他语言/框架/等,那么如果您提到它们是哪些语言会有所帮助。

于 2009-05-31T03:50:28.323 回答
1

您需要像这样设置DISPLAY环境变量:

DISPLAY=host:0.0

有关详细信息,请参阅X 联机帮助页

于 2009-05-31T03:50:40.430 回答
1

此功能编程接口似乎被调用$DISPLAYxlibXOpenDisplay()。您需要管理两个(或更多)Display对象。

各种更高级别的接口工具包(qt,...)有可能提供更抽象的接口。这将为您节省相当大的痛苦。

祝你好运。

于 2009-07-02T18:51:00.793 回答