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","&ndash;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](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](KeyboardInterrupt):
    return

if __name__ == "__main__":
  curses.wrapper(main)

`