Interagindo com aplicativos X programaticamente

8

Eu tenho um aplicativo que é construído usando GTK +. O aplicativo possui uma interface muito simples. Quando iniciada, a mesma janela sempre é aberta, com alguns controles de entrada.

Queremos escrever um script para preencher o texto em alguns campos, marque uma caixa de seleção e clique em um botão. Bastante simples e seria fácil se uma versão em linha de comando do aplicativo estivesse disponível (mas não está).

Qual é a melhor maneira de abordar a interação com um aplicativo X programaticamente?

Tom Marthenal
fonte

Respostas:

9

Dê uma olhada no xdotool ( página de manual do Ubuntu ).

É extremamente poderoso e deve poder fazer o que você precisar.

http://www.semicomplete.com/projects/xdotool/xdotool.xhtml

slm
fonte
Eu acho que o uso de xdotooldeve ser considerado apenas em casos reais de emergência! Escrever algo sério xdotoolé mais uma dor do que um prazer. Antes de tentar, xdotoolpergunte ao desenvolvedor se o aplicativo tem uma dbusinterface. Isso tornaria seu plano muito mais simples.
user1146332
1
@ user1146332 Estou a utilizar xdotoolpara várias tarefas sem problemas. Não sei exatamente o que é mais uma dor do que um prazer .
LinuxSecurityFreak
Estou usando o xdotool em uma situação semelhante, e uma coisa que é uma dor é que ele não pode olhar para a janela para a qual está enviando eventos. Uma questão é o tempo não determinístico: se o programa X precisar de algum tempo para processar um evento e ignorar o próximo evento quando for muito cedo, você precisará adicionar generosas pausas no sono, mas nunca saberá quanto tempo é suficiente.
Hans-Martin Mosner 23/03
3

xte, parte do xautomation é outra ferramenta que você pode usar para gerar entradas falsas do X11 usando a extensão XTest.

Na página inicial:

Controle X na linha de comando para obter scripts e faça "raspagem visual" para encontrar coisas na tela. A interface de controle permite o movimento do mouse, clicar, botão para cima / baixo, tecla para cima / baixo, etc, e usa a extensão XTest para que você não tenha os problemas irritantes que o xse tem quando os aplicativos ignoram os eventos enviados. O programa visgrep encontra imagens dentro das imagens e relata as coordenadas, permitindo que os programas encontrem botões, etc., na tela para clicar.

gioele
fonte
0

Xte funciona, mas é realmente antigo. O xdotool está pelo menos em desenvolvimento ativo.

Estudei bastante a geração de eventos X Windows, nominalmente para desenvolver um programa de macro de teclado capaz de digitar seqüências de caracteres ou a área de transferência em aplicativos que normalmente não permitem o uso de colar.

Notas sobre a manipulação de eventos na janela X ... http://www.ict.griffith.edu.au/anthony/info/X/event_handling.txt

Macro do teclado (usando xte ou xdotool http://www.ict.griffith.edu.au/anthony/software/#keyboard_macro

anthony
fonte
boas informações nos links, por que alguém rebaixou esta resposta? +1, mas será melhor incluir o resumo dos aplicativos encontrado no início do artigo em menos.
Badr Elmers