我正在尝试制作如下脚本:
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。