Página Inicial > Linux, Ubuntu, Utilitários > xdotool: Simulando teclado e movimentos/cliques do mouse no Linux

xdotool: Simulando teclado e movimentos/cliques do mouse no Linux

Essa semana no local onde eu trabalho surgiu uma necessidade: ligamos uma TV em um computador desktop qualquer que iria ficar ligado o tempo todo em uma determinada página da web que temos para monitorar nossos servidores. Simples assim:

  • ligamos a TV no computador;
  • ligamos o computador, que está com Ubuntu instalado;
  • configuramos o “Remote Desktop” para podermos controlar esse computador de nossas próprias máquinas;
  • configuramos o Firefox para abrir essa página como página inicial;
  • instalamos a extensão do Firefox R-kiosk para abrir automaticamente o browser em modo Full Screen.

Mas aí pensamos que o ideal seria ligar a máquina e ela já fazer tudo sozinho quando entrasse no ambiente gráfico (X/Gnome), ou seja: abrir o Firefox já com a página configurada. Dessa forma evitaríamos de ter que conectar remotamente só pra abrir o Firefox. Tudo bem, configuramos no “Startup Applications” do Ubuntu, o Firefox… funcionou, mas tem um porém: a página que acessamos exige autenticação com login e senha (HTTP Basic Authentication – aquela autenticação básica que pula uma popup na sua frente pra digitar o usuário e a senha). Hmmm… até poderíamos deixar os dados de login salvos no Firefox, ele ia abrir a popup de login e senha com os dados já preenchidos, mas… quem iria apertar “Enter” para dar o ok na janela de autenticação?

Foi aí que fazendo uma pesquisa rápida na internet, achei o tal do xdotool. Caiu como uma luva! Esse programa simples para Linux utiliza a extensão XTEST do X11 e algumas funções da Xlib para que você possa controlar o mouse e teclado chamando esse programa através da linha de comando com os parâmetros desejados. Usando um pouco a imaginação, foi possível fazer um script bem simples em Shell Script que faz basicamente o seguinte: inicia o Firefox e executa o xdotool com o parâmetro para simular o ato de apertar a tecla “Enter” quando a janela de autenticação aparecer (já devidamente preenchida, pois os dados de login já estavam salvos). Perfeito! Era isso que precisávamos.

Para quem tem Ubuntu, o programa está disponível no repositório oficial, via apt:

1
sudo apt-get install xdotool

Se sua distribuição não possui o programa no repositório, você pode baixá-lo no site oficial.

O script para abrir o Firefox e simular o “Enter” ao abrir a janela de autenticação é esse:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
 
# Inicia o Firefox
firefox &
 
# Aguarda 15 segundos apos iniciar o Firefox.
# Esse tempo pode variar, dependendo de alguns fatores como:
# tempo de inicializacao, conexao com internet, etc..
# O importante eh garantir que nesse tempo a janela de
# autenticacao ja estara aberta.
sleep 15
 
# Pega o Window ID da janela de autenticacao
# O titulo da janela de autenticacao, no Firefox em ingles, eh:
# "Authentication Required"
# Nao precisa colocar o titulo completo. Colocando soh o comeco,
# o xdotool ja o localiza.
# Se seu Firefox eh em portugues, altere de acordo com o titulo
# da janela em portugues.
WID=`xdotool search --title Authent`
 
# Coloca o foco na janela de autenticacao
xdotool windowfocus "$WID"
 
# "Aperta" o enter
xdotool key Return

Com isso, ao invés de configurar o Firefox no “Startup Applications”, configure para executar esse script.

Veja o vídeo do script em ação:
(obs: Nesse exemplo, eu estou inicializando uma máquina virtual, como se fosse um computador qualquer. Não é necessário fazer nenhuma intervenção após ligar o “computador”, pois o Firefox irá iniciar automaticamente e o script com o xdotool irá simular a tecla Enter na tela de autenticação)


O xdotool vai muito além de apenas simular a tecla “Enter”. Ele pode simular combinações de teclas, mover o mouse para posições específicas, clicar com botão esquerdo/meio/direito/etc do mouse, mover janelas entre desktops, etc… Usando a imaginação é possível fazer praticamente tudo que você faz com o teclado e mouse normalmente. Simples e fácil de usar, eu recomendo para quem precisa automatizar um processo como esse exemplo acima.

Todas as opções do programa estão em seu manual:

1
man xdotool
Compartilhe:
  • Twitter
  • Facebook
  • LinkedIn
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Reddit
  • StumbleUpon
  • RSS
  • Technorati
  • Print
Categories: Linux, Ubuntu, Utilitários Tags: Linux, Ubuntu, xdotool