等待分叉进程打开窗口

等待分叉进程打开窗口

我正在尝试制作如下脚本:

st -n dropdown &
pid=$(xdotool search --classname dropdown)

st是一个终端模拟器

我正在尝试使用 xdotool 在创建的 st 上运行一些命令。不幸的是,后面的命令st -n dropdown &是在实际的 st 终端启动之前运行的,因此没有 pid。我总是可以放在sleep 0.1后面,但在某些情况下(例如在较旧的机器上),终端启动所需的时间将超过 0.1 秒。有没有办法在执行脚本的其余部分之前等待终端启动?

wait命令不起作用,因为它等待进程完成,在这种情况下,st当它被杀死时,这不是我想要的。

答案1

xtoolwait是一个实用程序,它启动 X 应用程序并等待它映射其窗口。然后它将控制权返回给原始 shell 会话。

它通常从个人.xinitrc.xsession文件中使用。

您可以在脚本中使用它,如下所示:

xtoolwait st -n dropdown
pid=$(xdotool search --classname dropdown)

xtoolwait在检测到st已映射其窗口之前,第二个命令不会开始执行。请注意第一行缺少&(不需要)。这可以为第二个命令提供足够的延迟来正确找到 PID。

相关内容