我尝试使用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