Interaction avec les applications X par programme

8

J'ai une application qui est construite en utilisant GTK +. L'application a une interface très simple. Au démarrage, la même fenêtre s'ouvre toujours, avec quelques contrôles d'entrée.

Nous voulons écrire un script pour remplir du texte dans quelques champs, cochez une case, puis cliquez sur un bouton. Assez simple et serait facile à faire si une version en ligne de commande de l'application était disponible (mais ce n'est pas le cas).

Quelle est la meilleure façon d'aborder l'interaction avec une application X par programme?

Tom Marthenal
la source

Réponses:

9

Jetez un œil à xdotool ( page de manuel Ubuntu ).

Il est extrêmement puissant et devrait pouvoir faire tout ce dont vous avez besoin.

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

slm
la source
Je pense que l'utilisation de xdotoolne devrait être envisagée que dans les cas d'urgence réels! Scénariser quelque chose de sérieux xdotoolest plus une douleur qu'un plaisir. Avant d'essayer, xdotooldemandez au développeur si l'application possède une dbusinterface. Cela rendrait votre plan beaucoup plus simple.
user1146332
1
@ user1146332 J'utilise xdotoolpour diverses tâches sans problème. Je ne sais pas sur quoi repose plus exactement une douleur qu'un plaisir .
LinuxSecurityFreak
J'utilise xdotool dans une situation similaire, et une chose qui est pénible, c'est qu'il ne peut pas regarder la fenêtre à laquelle il envoie des événements. Un problème est le timing non déterministe: si le programme X a besoin de temps pour traiter un événement et ignorerait l'événement suivant lorsqu'il est arrivé trop tôt, vous devez ajouter de généreuses pauses de sommeil, mais vous ne savez jamais combien de temps est assez long.
Hans-Martin Mosner
3

xte, une partie de xautomation est un autre outil que vous pouvez utiliser pour générer de fausses entrées X11 à l'aide de l'extension XTest.

Depuis la page d'accueil:

Contrôlez X à partir de la ligne de commande pour les scripts et effectuez un "grattage visuel" pour trouver des choses à l'écran. L'interface de contrôle permet le mouvement de la souris, le clic, le bouton haut / bas, la touche haut / bas, etc., et utilise l'extension XTest pour que vous n'ayez pas les problèmes ennuyeux que xse a lorsque les applications ignorent les événements envoyés. Le programme visgrep trouve des images à l'intérieur des images et rapporte les coordonnées, permettant aux programmes de trouver des boutons, etc., sur l'écran pour cliquer.

gioele
la source
0

Xte fonctionne mais il est vraiment vieux. xdotool est au moins en développement actif.

J'ai fait beaucoup d'études sur la génération d'événements X Windows, nominalement pour développer un programme de macros de clavier qui peut taper des chaînes, ou le presse-papiers dans des applications qui normalement ne vous permettent pas d'utiliser le collage.

Remarques sur la gestion des événements X Window ... http://www.ict.griffith.edu.au/anthony/info/X/event_handling.txt

Macro de clavier (en utilisant xte ou xdotool http://www.ict.griffith.edu.au/anthony/software/#keyboard_macro

anthony
la source
bonne info dans les liens, pourquoi quelqu'un a-t-il dévalisé cette réponse? +1, mais il sera préférable d'inclure le résumé des applications trouvées au début de l'article au moins.
Badr Elmers