仅限linux: 我想为我的应用程序打开两个窗口,一个在计算机的主屏幕上,另一个在虚拟X11会话上,只能由远程桌面访问。有些X11专家可以告诉我这是怎么做到的吗?
答案 0 :(得分:1)
我对这个问题有点不清楚,但这是一个假设的设置:
我坐在我的电脑上(我们称之为根会话)我有一个shell。在这种情况下,有一个环境变量DISPLAY,其值为“127.0.0.1:0.0”。
第二个会话开始了。您需要知道此机器上的显示变量。如果它也在localhost上,它可能类似于“127.0.0.1:1.0”。如果您在另一台主机上执行“echo $ DISPLAY”,它会告诉您这一点。如果它报告“:1.0”或没有“127.0.0.1”的东西那没关系。如果未指定地址,则隐含localhost。
接下来,在返回根会话之前,您需要运行“xhost”以允许其他来源在此主机上显示窗口。 (免责声明:我要告诉你的是非常不安全,所以如果你在一个不安全的网络上,你可能想要阅读xhost的手册页)。在另一个显示器上的xterm中键入“xhost +”。此命令(特别是“+”选项)允许任何主机在此显示上弹出窗口。
那么你要做的就是回到root会话shell并且(我假设bash)运行“export DISPLAY =”127.0.0.1:1.0“。然后运行”xterm“,它应该弹出窗口在另一场会议上。
我希望这会有所帮助。
如果有任何不明确的情况,你可以搜索“X windows DISPLAY变量”。
答案 1 :(得分:1)
这取决于你编程的级别 - 如果你直接调用Xlib,我想你知道XCreateWindow
的第一个参数是Display *
,当然这就是你的方式告诉X11创建窗口的位置。 http://tronche.com/gui/x/xlib/window/XCreateWindow.html有关详情,请参阅。
如果您正在使用其他语言/框架/等,那么如果您提到它们是哪些语言/框架将会有所帮助。
答案 2 :(得分:1)
答案 3 :(得分:1)
programmatic interface to this $DISPLAY
functionality in xlib
appears to be called XOpenDisplay()
。您需要管理两个(或更多)Display
个对象。
各种更高级别的界面工具包(qt,...)可能提供更抽象的界面。这样可以省去相当大的痛苦。
祝你好运。