如何在 bash 脚本中使用 xdotool 正确检测 window

How to correctly detect window with xdotool in bash script

我正在尝试录制屏幕以及从我的网络摄像头输入的内容。要显示来自网络摄像头的图像,我使用 ffplay。但是我希望将它放置在屏幕的特定位置。为此,我使用 xdotool 并遵循 bash 脚本:

 #!/bin/bash                                                                                                                                                                                                                                   
 ffplay -i /dev/video0 &                                                                                                                                                                                       
 res=$!                                                                                                                  
 echo $res                                                                                                               
 window_pid=$(xdotool search --pid $res)                                                                                       
 echo $window_pid
 xdotool windowmove $window_pid 1200 200                                                                                                       
 wait

出于某种原因,我获得了正确的进程 ID res,但 window_pid 没有。如果我在终端中 运行 类似的命令它工作正常(我在一个终端实例中 运行 ffplay 和另一个中的其余命令)。我在这里错过了什么?

你可以试试这个:

#!/bin/bash                                                                                                                                                                                                                                   
ffplay -i /dev/video0 &                                                                                                                                                                                       
res=$!                                                                                                                  
echo $res                                                                                                               
until window_pid=$(xdotool search --pid $res); test -n "$window_pid"; do
    sleep .1
done
echo $window_pid
xdotool windowmove $window_pid 1200 200                                                                                                       
wait