segunda-feira, 3 de novembro de 2014

Utilizando o xdotool para manipular arquivos.

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/

Nenhum comentário:

Postar um comentário