我想在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 变量。)
谢谢,丹