如何防止xdotool在執行腳本後鎖定目前視窗?

如何防止xdotool在執行腳本後鎖定目前視窗?

我有一個簡單的 BASH 腳本xdotool,它從 CSV 讀取一些數據,並將其輸入到其他軟體的表單中:

#!/bin/bash

sleep 5

while read -r line
do
    a="$(echo $line | awk '{ print $1 }')"
    xdotool type $a
    xdotool key "$Tab"
done < ./data.csv

aplay Beep.wav

該腳本按預期工作,但在發出蜂鳴聲後,螢幕被鎖定:

  • 滑鼠移動,但沒有任何視窗可以看到它(例如不出現工具提示)並且它無法單擊任何內容,甚至是當前視窗。
  • 鍵盤單字,但僅限於目前視窗內。
  • 窗戶就這樣被鎖了大約5分鐘,然後突然就不再鎖了。

CTRL+ALT+F1 允許我更改控制台,但killall -9 xfce4-terminalkillall -9 xdotool沒有停止鎖定。

如何防止xdotool在腳本中運行目前視窗後鎖定目前視窗?

答案1

它會發出蜂鳴聲,因為它正在等待您單擊要與其互動的視窗。您沒有註意到遊標變成了“+”符號嗎?

再次閱讀手冊頁。您需要提供一個視窗 ID (--windowID

答案2

我自己遇到了這個相當老的問題來尋找答案,因為我有類似的問題。我使用 xdotool 在網站上自動輸入登入資訊(在 Firefox 中)。

我使用 xbindkeys 將組合鍵綁定到腳本。此腳本識別視窗名稱(也使用 xdotool),在加密檔案中尋找關聯條目,載入適當的登入資訊並鍵入它。

我不會解釋我的腳本的複雜性、用戶與其互動以及它將資訊輸入輸入欄位的方式。但是,我解決了這個問題在實際打字之前添加短暫的睡眠

sleep 0.4
xdotool type ...

我承認這是一個黑客解決方案,但它似乎有效。我希望這個解決方案可以對任何其他想要克服這個非常令人沮喪的錯誤(?)的人有所幫助,或者可能敦促其他人寫出更好的答案。

相關內容