スクリプトの後に xdotool が現在のウィンドウをロックするのを防ぐにはどうすればよいですか?

スクリプトの後に xdotool が現在のウィンドウをロックするのを防ぐにはどうすればよいですか?

xdotool私は、CSV からデータを読み取り、それを他のソフトウェアのフォームに入力する、 を使用した簡単な BASH スクリプトを持っています。

#!/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

私も同じような問題を抱えていたので、答えを探していたときに、このかなり古い質問に出会いました。私は、Web サイト (Firefox) でログイン情報を自動入力するために xdotool を使用しています。

xbindkeys を使用して、キーの組み合わせをスクリプトにバインドしました。スクリプトはウィンドウ名を識別し (xdotool も使用)、暗号化されたファイル内の関連するエントリを検索し、適切なログイン情報を読み込んで入力します。

私のスクリプトの複雑さ、ユーザーとのやり取り、入力フィールドに情報を入力する方法については説明しません。しかし、私は次のようにして問題を解決しました。実際にタイピングする直前に短いスリープを追加する

sleep 0.4
xdotool type ...

これはハックっぽい解決策だと認めますが、うまく機能しているようです。この解決策が、この非常にイライラするバグ(?)を克服しようとしている他の人の助けになるか、あるいは他の人がより良い回答を書くきっかけになれば幸いです。

関連情報