O xdotool é uma ferramenta de instruções que permite aos programadores emularem o pressionamento de teclas do teclado e do mouse, além de manipular janelas. Esse post tem a intenção de dar uma introdução à utilização dessa ferramenta em um ambiente Linux. Para baixar a ferramenta basta executar o seguinte comando:
sudo apt-get install xdotool
A sintaxe dos comandos xdotool é simples e direta com a xdotool seguida de opções e argumentos. Search: O comando search procura por uma janela que foi informada nos argumentos e se ele for o único ou último comando da cadeia ele irá retornar o ID da janela. Esse comando pode buscar a janela através de 3 formas: pelo nome se for informada opção –name; pela classe da janela se for informada a opção –class; e pelo nome da classe se for informada a opção –classname. Para procurar uma janela através do seu nome, execute:
xdotool search --name "nome_janela"
Uma outra opção deste comando é a –sync, ela bloqueia o xdotool até que tenha ocorrido algum resultado. O comando a seguir procura por uma janela através do seu nome e espera até que a janela tenha sido encontrada.
xdotool search --sync --name "nome_janela"
Este comando pode ser usado para que o xdotool aguarde o tempo necessário até que a janela de um programa seja carregada. Exec: O comando exec executa um programa. O –sync é sua única opção.
xdotool exec --sync gcalctool
obs.: Esta opção não pode ser utilizada para abrir arquivos ou páginas web, para isso deve ser utilizada a ferramenta gnome-open. Sleep: O comando sleep faz o código esperar por um período específico que foi informado como argumento. Abaixo um exemplo de uma pausa de 1 segundo.
xdotool sleep 1
Type: O comando type serve para simular uma digitação de texto, ele recebe como argumento o texto que será digitado. Uma das opções desse comando é o –delay na qual se deve informar o tempo em milissegundos que irá demorar entre a digitação de uma tecla e outra, determinando assim a velocidade que o texto será digitado. A seguir um exemplo que digita uma palavra com tempo de 215ms entre caracteres.
xdotool type --delay 215 "texto"
Key: O comando key serve para simular o pressionamento de alguma tecla ou conjunto de teclas . Ele recebe como argumento a tecla que será pressionada. Por exemplo o atalho Ctrl+c pode ser simulado pelo comando a seguir.
xdotool key "ctrl+c"
Para entendermos na prática o funcionamento dos comandos do xdotool que foram explicados vamos supor que precisamos de um script que abra o libreoffice, procure pela janela, digite um texto, espere 1 segundo e salve esse arquivo em qualquer lugar com qualquer nome.
#abrir o libreoffice xdotool exec loffice --writer #procurar pela janela xdotool --sync --name "Sem título 1" #sem título 1 é o nome da janela padrão que o libreoffice abre #digita o texto xdotool type --delay 215 "texto" #espera 1 segundo xdotool sleep 1 #salva o arquivo xdotool key "ctrl+s" #espera 1 segundo para garantir que a janela de salvamento irá abrir antes do próximo comando xdotool sleep 1 #pressiona enter para confirmar e salvar o arquivo xdotool key "KP_Enter"
Referências: http://www.ibm.com/developerworks/br/linux/library/x-xdotool/ http://www.semicomplete.com/projects/xdotool/xdotool.xhtml