xdotool
Mehr Info
- Erstellt von
- Jordan Sissel
- Jahr
- Typ
- Kommandozeilenwerkzeug
- Lizenz
- BSD-3-Clause
- Quellcode
- github.com/jordansissel/xdotool
Das Kommandozeilenwerkzeug, das den Benutzer imitiert: Es drückt Tasten, bewegt die Maus und findet, fokussiert und verschiebt X11-Fenster aus einem Shell-Skript heraus.
Jordan Sissel, später als Vater von Logstash bekannt, veröffentlichte xdotool 2007, um Programme zu steuern, die selbst keine Kommandozeilenschnittstelle haben. xdotool key ctrl+alt+t sendet eine Tastenkombination, xdotool type 'text' tippt eine Zeichenkette, xdotool mousemove 400 300 click 1 bewegt und klickt, und xdotool search --name Firefox windowactivate findet ein Fenster und gibt ihm den Fokus. Befehle lassen sich in einer Zeile verketten, und die Bibliothek libxdo leistet dasselbe aus C. Eingaben laufen über die XTEST-Erweiterung, die Ereignisse so in den Server einspeist, als kämen sie von der Tastatur, die Fensterverwaltung über die EWMH-Eigenschaften — das Werkzeug funktioniert also mit jedem modernen Fenstermanager.
Zwei Fallstricke sind bekannt. Mit --window gehen die Tasten stattdessen per XSendEvent hinaus, was viele Programme ignorieren, weil das Ereignis als synthetisch markiert ist; ohne die Option landet alles in dem Fenster, das beim Ausführen des Skripts gerade den Fokus hat, und so ist schon mal ein Passwort in einem Chatfenster gelandet. Wayland kennt kein Gegenstück zu XTEST, und Nachfolger wie ydotool müssen über uinput des Kernels gehen, mit den dafür nötigen Rechten.