仅限 linux:我想为我的应用程序打开两个窗口,一个在计算机的主屏幕上,一个在只能由远程桌面访问的虚拟 X11 会话上。一些 X11 专家可以告诉我这是如何完成的吗?
4 回答
我对这个问题有点不清楚,但这是一个假设的设置:
我坐在我的电脑上(我们称之为根会话),我有一个外壳。在这种情况下,有一个值为“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”。
这取决于您正在编程的级别——如果您直接调用 Xlib,我想您知道第一个参数XCreateWindow
是 a Display *
,当然这就是您告诉 X11 在哪里创建窗口的方式。 http://tronche.com/gui/x/xlib/window/XCreateWindow.html了解详细信息,以防万一。
如果您使用的是其他语言/框架/等,那么如果您提到它们是哪些语言会有所帮助。
此功能的 编程接口似乎被调用$DISPLAY
xlib
XOpenDisplay()
。您需要管理两个(或更多)Display
对象。
各种更高级别的接口工具包(qt,...)有可能提供更抽象的接口。这将为您节省相当大的痛苦。
祝你好运。