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

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

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

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

答案1

X 程序通过查看环境变量知道它们应该与哪个 X 会话对话DISPLAY

首先,您需要找出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,并观看那里新的漂亮的挂钟。

事实上你可以执行上面的命令在任何外壳中DISPLAY=:0.0在同一台机器上(通过 SSH、在任何 X 会话中、在任何控制台上等)——您在命令之前指定的事实意味着该xclock窗口将始终在同一个 X 会话中弹出。

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

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

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

答案2

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

相关内容