xTerm 如何与包含它的 XWindows 会话进行通信?

问题描述 投票:0回答:2

我想编写在 Linux (openSUSE 12.3) 和 XWindows 下以 kiosk 模式打开 chromium 的脚本,同时控制 chromium 出现在哪个监视器中。我还需要让这个脚本在标准 xterm 之外运行,例如通过 ssh 进入将运行 chromium 和显示器的机器(即我希望应用程序出现在我正在连接的机器的显示器之一上,而不是我正在连接的机器上)。

我可以在目标机器上的 xterm 中手动执行我想要的所有操作,但我不会在 xterm 中运行这些脚本。不知何故,xterm 环境很特殊:它知道如何与包含的 XWindows 会话对话,并且实际上知道它托管在哪个实际监视器上。例如:

  • 当我 ssh 进入机器并尝试在目标机器的显示器上运行 XWindows GUI 时,它(合理地)抱怨“无法打开显示器”。但是,即使我将 DISPLAY 环境变量设置为与 xterm 中看到的值相同的值,我仍然会收到错误(尽管它现在包含当前的 DISPLAY 值)。我还尝试将 DISPLAY 设置为“:X.Y”上的各种排列,其中 X 和 Y 是小整数,但再次无济于事。

  • 如果我从 xterm 以 --kiosk 模式运行 chromium,它将接管当前包含 xterm 窗口的监视器。如果我将 xterm 拖到另一个显示器上,那么 Chromium 将在该显示器中启动。当我从脚本中启动 chromium 时,我想要这种控制,但无法弄清楚背景魔法。

对于窗口操作,我看到了使用 wmctrl 或 Devilspie 的建议,但我对依赖多年未更新的工具感到有点紧张。我还希望立即在正确的位置启动 Chromium,而不是让它出现在错误的位置然后被移动。这两个应用程序都无法帮助我远程启动该应用程序。

所以,这是问题。首先,xterm 如何告诉 chromium 如何连接到正确的 XWindows 会话和监视器?其次,如何从完全独立的 ssh 连接模拟它? (再次强调:它不仅仅是 DISPLAY 变量。)

谢谢, 丹

linux session chromium x11 xterm
2个回答
1
投票

由于权限原因,您无法在目标计算机的显示屏上打开 X 客户端:任何可以 ssh 进入计算机的人都不能“取得其屏幕的所有权”。这些是由

xset
控制的东西——仔细阅读。

至于显示:我假设特定监视器由

DISPLAY
环境的第二部分控制。至少这是我在阅读 X 时所记得的。我从未真正在多显示器 X 环境中工作过。


0
投票

Xterm 并不特别。你的鼠标指针是。 Chromium 将出现在鼠标指针所在的显示器上。这可能是窗口管理器的默认行为。

Chromium 不尊重通常的窗口位置请求。您无法告诉 Chromium 在哪里出现,您必须告诉您的窗口管理器将 Chromium 窗口放置在哪里。这样做的方法(如果存在)完全取决于您拥有的窗口管理器。

如果您以启动 X 会话的用户身份 ssh 到您的计算机,则连接到该会话应该没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.