staging.inyokaproject.org

xdotool

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png xdotool 🇬🇧 ist ein kleines, aber effektives Befehlszeilenwerkzeug für den XServer, mit dem sich Maus- und Tastatureingaben emulieren sowie Programmfenster manipulieren lassen. Es lässt sich zum Beispiel verwenden, um mittels xbindkeys Funktionstasten einer Maus zu belegen, den Funktionsumfang einfacher Fenstermanager zu erweitern oder Eingaben zu automatisieren.

Installation

xdotool kann direkt aus den offiziellen Paketquellen installiert werden [1]:

  • xdotool (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install xdotool 

Oder mit apturl installieren, Link: apt://xdotool

Benutzung

Die Bedienung erfolgt über die Befehlszeile [2] und mehrere Befehle können in einem Shell-Skript zusammengefasst werden. Innerhalb einer Desktopumgebung können diese Befehle oder Skripte aber auch über einen Programmstarter oder ein Tastenkürzel aufgerufen werden.

Im Detail sind alle Funktionen in der Manpage 🇬🇧 dokumentiert.

Beispiele

Nachfolgend einige Beispiele, die den Funktionsumfang demonstrieren.

  • Drücken der Funktionstaste zum Stummschalten der Audioausgabe emulieren:

    xdotool key XF86AudioMute 
  • Den Mauszeiger an die x,y-Koordinate 100,200 springen lassen:

    xdotool mousemove 100 200 

    Der Nullpunkt ist links oben, nicht links unten. Die Position hängt von der Auflösung des Bildschirms ab. Um die gewünschte Position nicht durchprobieren zu müssen, kann man sie mit folgendem Befehl ermitteln lassen:

    xdotool getmouselocation 
  • An der zuletzt gesetzten Mausposition mit der linken Maustaste (1) klicken:

    xdotool click 1 
  • Befehle lassen sich auch zusammenfassen / kombinieren:

    xdotool mousemove 100 200 click 1 
  • Die Bewegung des Mauszeigers um 10 Pixel nach rechts emulieren:

    xdotool mousemove_relative 10 0 
  • Die virtuelle Arbeitsfläche relativ zur aktiven wechseln:

    xdotool set_desktop --relative 1     ## Nächste Arbeitsfläche 

    oder auch

    xdtool set_desktop --relative -- -1    ## Vorherige Arbeitsfläche 
  • Mit dem Mauszeiger am rechten Bildschirmrand den Standard-Terminal-Emulator starten:

    xdotool behave_screen_edge --delay 1000 right exec x-terminal-emulator 
  • Eine laufende Firefox-Instanz in den Vordergrund bringen, einen neuen Reiter (Tab) öffnen, die Adressleiste fokussieren und ubuntuusers.de aufrufen:

    WID=$(xdotool search firefox | head -n1)     ## Window-ID von Firefox ermitteln
    xdotool windowactivate $WID
    xdotool key "ctrl+t"                         ## neuen Reiter öffnen
    xdotool key "ctrl+l"                         ## Fokussieren der Adressleiste
    xdotool type --delay 100 "ubuntuusers.de"    ## Internetadresse eintippen
    xdotool key "Return"                         ## Internetadresse aufrufen 
  • Shell-Skript: Zehn mal dieselbe Position mit einer Pause von je 0,1s klicken:

    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    i=1
    while [ $i -le 10 ]
    do 
      xdotool mousemove 100 200 click 1
      sleep 0.1
      i=$(( $i + 1 ))
    done
    
  • Shell-Skript: Den Mauszeiger sprunghaft zehn mal mit je einer Pause aus einem Zufallswert von 1 oder 3 Sekunden bewegen, wobei die Position der x-Achse (horizontal) nach jedem Klick um zehn Pixel nach rechts gesetzt wird:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    #!/bin/bash
    i=1
    x=100
    while [ $i -le 10 ]
    do 
      xdotool mousemove "$x" 200    ## click 1 am Zeilenende ergänzen, wenn an jeder Position auch geklickt werden soll
      sleep $(shuf -i1-3 -n1)
      i=$(( $i + 1 ))
      x=$(( $x + 10 ))
    done
    

    Dieses Skript kann auch als Einzeiler direkt im Terminal aufgerufen werden:

    i=1; x=100; while [ $i -le 10 ]; do xdotool mousemove , $x,  200; sleep $(shuf -i1-3 -n1); i=$(( $i + 1 )); x=$(( $x + 10 )); done 

Diese Revision wurde am 2. Mai 2021 12:07 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Desktop, Shell, System