有没有办法告诉启动的GUI应用程序何时显示其窗口?

时间:2012-11-09 14:47:03

标签: linux bash

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

2 个答案:

答案 0 :(得分: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和窗口之间的关系并不总是微不足道,但你明白了。

答案 1 :(得分:2)

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

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

应用程序如何与应用程序管理器通信以告知它们已完成加载是使用inter-process communication的许多可用机制

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