获取窗口关闭时的事件

获取窗口关闭时的事件

我尝试使用xdotool.在一项任务中我想要自动将网站保存到文件中。在 Firefox 上打印时,有一个进度条,如下所示:

在此输入图像描述

我想在打印窗口关闭时启动新任务(保存文件后自动关闭)。我当前的解决方法是使用类似的方法sleep 10来阻止下一个任务提前开始。如何获取打印窗口已关闭的事件?

(我是 Linux Mint 用户。)

bash脚本

# Get window id (Firefox)
FIREFOX_ID=$(xdotool search --name "Mozilla Firefox" | head -n1)
# Activate window (Firefox)
xdotool windowactivate "$FIREFOX_ID"
# Open print dialog
xdotool key "ctrl+p"
# Get window id (print dialog)
DIALOG_ID=$(xdotool search --name "Print") # Change name to your language
# Activate window (print dialog)
xdotool windowactivate "$DIALOG_ID"
# Click "Print" button
xdotool mousemove 1240 790 click 1 # Change coordinates to yours

答案1

我想你可以检查“打印”窗口。使用上面的代码,让我们关注单击打印的那一刻:

# Click "Print" button
xdotool mousemove 1240 790 click 1 # Change coordinates to yours

之后,您将出现一个“正在打印”(“Drucken”)进度框。在继续之前我们先检查一下它是否存在:

#sleep 1 second to allow printing to start - a pure safety measure
sleep 1
#check for printing progress window until failed
while (xdotool search --name "Printing") ; do
  sleep 0.1
done
<next command>

即只要有“打印”对话框, do while-loop 就会运行并阻止下一个命令。


关于wait命令:

这不适用于此处,因为xdotool它会激活 shell 脚本之外的进程。尽管如此,它只是用于确保正在等待进程完成:

 #!/bin/bash
 do_some_command & wait

相关内容