xdotool
詳細情報
- 作者
- Jordan Sissel
- 公開年
- 種類
- コマンドラインツール
- ライセンス
- BSD-3-Clause
- ソース
- github.com/jordansissel/xdotool
ユーザになりすますコマンドラインツール。シェルスクリプトからキーを押し、マウスを動かし、X11のウィンドウを探して、フォーカスし、移動する。
のちにLogstashで知られるJordan Sisselが2007年に公開した。コマンドライン操作を持たないプログラムを動かすための道具である。xdotool key ctrl+alt+tでキーの組み合わせを送り、xdotool type 'text'で文字列を打ち込み、xdotool mousemove 400 300 click 1でマウスを動かしてクリックし、xdotool search --name Firefox windowactivateでウィンドウを探してフォーカスを与える。コマンドは一行に連結でき、C向けにはlibxdoライブラリがある。入力はXTEST拡張を通してキーボード由来のようにサーバへ注入され、ウィンドウ管理はEWMHプロパティを使うため、現代的なウィンドウマネージャならどれでも動く。
有名な落とし穴が二つある。--windowを付けるとキーはXSendEvent経由になり、合成イベントの印が付くため多くのプログラムが無視する。付けなければ、スクリプト実行時にたまたまフォーカスのあるウィンドウにすべて入力され、パスワードをチャット欄に打ち込んだ例もある。WaylandにはXTESTに相当するものがなく、ydotoolなどの後継はカーネルのuinputを通るため、相応の権限が要る。