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

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

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

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

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

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

例如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和窗口之间的关系并不总是微不足道的,但你明白了。