Bash

視窗關閉時獲取事件

  • January 13, 2021

我嘗試使用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

引用自:https://unix.stackexchange.com/questions/628965