Bash
視窗關閉時獲取事件
我嘗試使用
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
我想你可以只檢查“列印”視窗。把你的程式碼放在上面,讓我們專注於你點擊列印的那一刻:
# Click "Print" button xdotool mousemove 1240 790 click 1 # Change coordinates to yours
之後,您將出現一個“列印”(“Druken”)進度框。讓我們在繼續之前檢查它的存在:
#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