是否可以选择要在哪个X显示器上运行程序实例?


10

如果系统上运行多个X Windows,是否可以在特定窗口上运行程序?您将如何识别Window并在其中运行程序?

我假设我拥有运行这样的程序所需的任何权限。


Answers:


15

X程序通过查看DISPLAY环境变量来知道应该与哪个X会话进行对话。

首先,您需要找出DISPLAY要在其上运行程序的X会话中设置的内容。为此,请echo $DISPLAY在该X会话的X终端内发出命令。通常会得到类似:0.0的输出。

比方说,你要启动的优秀节目xclock在X会话的程序DISPLAY:0.0,但你要在控制台做到这一点。然后,按Alt-Ctrl-F1切换到该控制台,然后键入:

DISPLAY=:0.0 xclock   # variables set w/ a command are local to that command

然后,您可以通过按Alt-Ctrl-F7或Alt-Ctrl-F8(或其他一些F键,具体取决于您的Linux风格)返回X,然后观看那里的新壁钟。

实际上,您可以在同一台计算机上的任何Shell中执行上述命令(通过SSH,在任何X会话中,在任何控制台等上)– DISPLAY=:0.0在命令之前指定的事实意味着该xclock窗口将始终在其中弹出相同的X会话。

实际上,除了X程序会查看它之外,DISPLAY变量没有什么特别的。通常,当您从X终端启动程序时,它们会在正确的位置启动,因为DISPLAY已经为您设置好了。

除了使用上面的命令,您还可以通过先设置DISPLAY,然后运行来将其分成两个部分xclock。在这种情况下,DISPLAY设置将一直持续到您关闭该外壳为止,并且从那里启动的所有后续X程序都将在相同的X会话中打开xclock

                      # variables set w/o a command are local to the shell,
export DISPLAY=:0.0   # unless exported
xclock

1
请注意,除非您先将shell变量导出到环境中,否则最后一点将无法工作。
Ignacio Vazquez-Abrams

我认为DISPLAY它将默认设置为导出,因为它是由shell导入的(它对我zshdash我都有效,而无需使用export)。但是,是的,如果你不能得到两行版本的工作,尝试更换DISPLAY=:0.0export DISPLAY=:0.0
zrajm

1

通常,X客户端程序使用DISPLAY环境变量来知道要连接到哪个X服务器显示。某些程序还接受命令行参数(-display或类似的参数),该参数可用于覆盖DISPLAY环境变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.