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)