Interactuando con aplicaciones X mediante programación

8

Tengo una aplicación construida con GTK +. La aplicación tiene una interfaz muy simple. Cuando se inicia, siempre se abre la misma ventana, con algunos controles de entrada.

Queremos escribir un script para completar el texto en un par de campos, marcar una casilla de verificación y luego hacer clic en un botón. Bastante simple, y sería fácil de hacer si estuviera disponible una versión de la línea de comandos de la aplicación (pero no lo está).

¿Cuál es la mejor manera de abordar la interacción con una aplicación X mediante programación?

Tom Marthenal
fuente

Respuestas:

9

Eche un vistazo a xdotool ( página de manual de Ubuntu ).

Es extremadamente poderoso y debería poder hacer lo que necesite.

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

slm
fuente
¡Creo que el uso de xdotoolsolo debe considerarse en casos de emergencia reales! El guión de algo serio xdotooles más un dolor que un placer. Antes de intentar xdotoolpreguntar al desarrollador si la aplicación tiene una dbusinterfaz. Eso haría tu plan mucho más simple.
user1146332
1
@ user1146332 Estoy usando xdotoolpara varias tareas sin problema. No sé en qué se basa exactamente más un dolor que un placer .
LinuxSecurityFreak
Estoy usando xdotool en una situación similar, y una cosa que es dolorosa es que no puede mirar la ventana a la que está enviando eventos. Un problema es el tiempo no determinista: si el programa X necesita algo de tiempo para procesar un evento e ignoraría el siguiente evento cuando llegó demasiado temprano, debe agregar pausas de sueño generosas, pero nunca se sabe cuánto tiempo es lo suficientemente largo.
Hans-Martin Mosner
3

xte, parte de xautomation es otra herramienta que puede usar para generar entradas X11 falsas utilizando la extensión XTest.

Desde la página de inicio:

Controle X desde la línea de comandos para las secuencias de comandos y realice un "raspado visual" para buscar elementos en la pantalla. La interfaz de control permite mover el mouse, hacer clic, subir / bajar botones, subir / bajar teclas, etc., y utiliza la extensión XTest para que no tenga los molestos problemas que tiene xse cuando las aplicaciones ignoran los eventos enviados. El programa visgrep encuentra imágenes dentro de las imágenes e informa las coordenadas, permitiendo que los programas encuentren botones, etc., en la pantalla para hacer clic.

gioele
fuente
0

Xte funciona pero es muy viejo. xdotool está al menos en desarrollo activo.

Estudié mucho sobre la generación de eventos X Windows, nominalmente para desarrollar un programa macro de teclado que pueda escribir cadenas o el portapapeles en aplicaciones que normalmente no le permiten usar pegar.

Notas sobre el manejo de eventos de X Window ... http://www.ict.griffith.edu.au/anthony/info/X/event_handling.txt

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

Antonio
fuente
buena información en los enlaces, ¿por qué alguien rechazó esta respuesta? +1 pero será mejor incluir el resumen de las aplicaciones que se encuentran al principio del artículo como mínimo.
Badr Elmers