os/x11/ XDoTool
Random Examples
Examples
List window names matching pattern
xdotool search --name "$search_string" getwindowname %@ # or
xdotool search --name "$search_string" | xargs -n1 xdotool getwindowname
Send keys to named window (sends to):
xdotool search --name "$search_string" key key1 key2 ...
Scripts
Example python script using curses and subprocess to send keypresses to named window using xdotool
#!/usr/bin/env python3
import curses
import subprocess
import sys
args = sys.argv[1:]
try:
name = args[0]
except Exception:
print(f"{args[0]} <window search pattern>")
exit(1)
def sendkey(x):
subprocess.run(["xdotool","search","--name",name,"key",x])
def main(stdscr):
curses.noecho()
stdscr.addstr(f"Search for {name}\nPress left, right, up, down, or a character\n")
stdscr.refresh()
try:
while True:
c = stdscr.getch()
k = chr(c)
if k.upper() in "ABCDEFGHIJLKMNOPQRSTYVWXYZ0123456789":
sendkey(k)
elif k == " ":
sendkey("space")
elif c == curses.KEY_LEFT:
sendkey("Left")
elif c == curses.KEY_RIGHT:
sendkey("Right")
elif c == curses.KEY_UP:
sendkey("Up")
elif c == curses.KEY_DOWN:
sendkey("Down")
except KeyboardInterrupt:
return
if __name__ == "__main__":
curses.wrapper(main)