2

我正在寻找一种从脚本启动多个 GUI 应用程序的方法,以便应用程序窗口的显示顺序与启动应用程序的顺序相同。这可能吗?

4

2 回答 2

3

这似乎是wmctrl的工作,例如:

wait_for_window() {
  "$@" &
  local PID=$!
  while test -z "$(wmctrl -pl | awk "\$3 ~ $PID")"; do 
    sleep 1
  done
}

wait_for_window gnome-calculator
wait_for_window gnome-terminal

这可能需要一些调整,因为 PID 和窗口之间的关系并不总是微不足道的,但你明白了。

于 2012-11-09T15:15:09.247 回答
2

我唯一能想到的是比启动脚本更复杂的东西。例如应用程序管理器,并使用事件(在您的情况下为“应用程序启动”事件)启动下一个应用程序等

如果您试图从控制台启动应用程序并希望它们按照您启动它们的相同顺序完成初始化/启动,那么它不会起作用,因为您无法控制加载应用程序需要多长时间。

应用程序如何与应用程序管理器通信以告诉它它们已完成加载是使用许多可用的进程间通信机制

另一方面,如果这些应用程序不是您的,并且您无法在其中实施 IPC,那么您必须找到另一种方法来确定它们是否在启动下一个应用程序之前已启动,如果他们提供,则可能 ping 它们,或者搜索他们在重新启动时创建的某些文件,或者您可以检测并根据它决定应用程序是否已启动的任何其他行为

于 2012-11-09T14:55:08.753 回答