[[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Pakete_installieren:Installation von Programmen] [:Terminal: Ein Terminalfenster öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [https://www.semicomplete.com/projects/xdotool/ xdotool] {en} 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]: {{{#!vorlage Paketinstallation xdotool, universe }}} = Benutzung = Die Bedienung erfolgt über die Befehlszeile [2] und mehrere Befehle können in einem [:Shell:Shell-Skript] zusammengefasst werden. Innerhalb einer [:Desktop: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 [man:xdotool:Manpage] {en} dokumentiert. == Beispiele == Nachfolgend einige Beispiele, die den Funktionsumfang demonstrieren. * Drücken der Funktionstaste zum Stummschalten der Audioausgabe emulieren: [[Vorlage(Befehl, "xdotool key XF86AudioMute")]] * Den Mauszeiger an die x,y-Koordinate 100,200 springen lassen: [[Vorlage(Befehl, "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: [[Vorlage(Befehl, "xdotool getmouselocation")]] * An der zuletzt gesetzten Mausposition mit der linken Maustaste (1) klicken: [[Vorlage(Befehl, "xdotool click 1")]] * Befehle lassen sich auch zusammenfassen / kombinieren: [[Vorlage(Befehl, "xdotool mousemove 100 200 click 1")]] * Die Bewegung des Mauszeigers um 10 Pixel nach rechts emulieren: [[Vorlage(Befehl, "xdotool mousemove_relative 10 0")]] * Die virtuelle Arbeitsfläche relativ zur aktiven wechseln: [[Vorlage(Befehl, "xdotool set_desktop --relative 1 ## Nächste Arbeitsfläche")]] oder auch [[Vorlage(Befehl, "xdtool set_desktop --relative -- -1 ## Vorherige Arbeitsfläche")]] * Mit dem Mauszeiger am rechten Bildschirmrand den Standard-Terminal-Emulator starten: [[Vorlage(Befehl, "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:\ {{{#!vorlage Befehl 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:\ {{{#!code Bash #!/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:\ {{{#!code Bash #!/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: [[Vorlage(Befehl, "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")]] = Links = * [https://www.semicomplete.com/projects/xdotool/ Projektseite] {en} * [:xbindkeys:] - Unabhängiger Dienst zum Belegen von Tastenkombinationen * [:wmctrl:] - neueres Werkzeug mit ähnlicher Funktionalität ## * [:Archiv/Brightside:] - Ecken und Kanten der Arbeitsfläche für Aktionen nutzen * [:Eingabegeräte:] {Übersicht} Übersicht für Eingabegeräte * [:Fenstermanager:] {Übersicht} Übersicht für Fenstermanager #tag: System, Shell, Desktop