0

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

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

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

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

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

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

谢谢,丹

4

2 回答 2

1

由于权限,您无法在目标机器的显示器上打开 X 客户端:不是任何可以 ssh 进入机器的人都可以“拥有”它的屏幕。这些是由xset——阅读它控制的东西。

至于显示:我假设具体的监视器是由DISPLAY环境的第二部分控制的。至少那是我在阅读有关 X 时所记得的。我从未真正在多监视器 X 环境中工作过。

于 2013-09-14T19:47:35.830 回答
0

Xterm 并不特别。你的鼠标指针是。Chromium 将出现在您的鼠标指针恰好位于的监视器上。这可能是您的窗口管理器的默认行为。

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

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

于 2013-09-16T16:53:04.543 回答