【问题标题】:How to correctly detect window with xdotool in bash script如何在 bash 脚本中使用 xdotool 正确检测窗口
【发布时间】:2020-09-11 00:21:25
【问题描述】:

我正在尝试录制屏幕以及来自我的网络摄像头的输入。要显示来自网络摄像头的图像,我使用 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,而在另一个终端实例中运行其余命令)。我在这里想念什么?

【问题讨论】:

    标签: bash ffmpeg terminal xdotool


    【解决方案1】:

    你可以试试这个:

    #!/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
    

    【讨论】:

    • xdotool 工作正常,我只是脚本有问题,而不是实用程序
    • 你能把sleep 5放在第一个echo后面吗?
    • 它有 5 秒的延迟。是否可以立即执行此操作?
    猜你喜欢
    • 2020-08-30
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多