如果系统上运行多个 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
环境变量。