Programmgesteuerte Interaktion mit X-Anwendungen

8

Ich habe eine Anwendung, die mit GTK + erstellt wurde. Die Anwendung hat eine sehr einfache Oberfläche. Beim Start wird immer das gleiche Fenster mit einigen Eingabesteuerelementen geöffnet.

Wir möchten ein Skript schreiben, um Text in ein paar Felder einzufügen, ein Kontrollkästchen aktivieren und dann auf eine Schaltfläche klicken. Ziemlich einfach und wäre einfach zu tun, wenn eine Befehlszeilenversion der App verfügbar wäre (aber nicht).

Was ist der beste Weg, um programmgesteuert mit einer X-Anwendung zu interagieren?

Tom Marthenal
quelle

Antworten:

9

Schauen Sie sich xdotool ( Ubuntu-Manpage ) an.

Es ist extrem leistungsfähig und sollte in der Lage sein, alles zu tun, was Sie brauchen.

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

slm
quelle
Ich denke, die Verwendung von xdotoolsollte nur in echten Notfällen in Betracht gezogen werden! Das Schreiben von etwas Ernsthaftem xdotoolist eher ein Schmerz als ein Vergnügen. Bevor Sie versuchen, xdotoolfragen Sie den Entwickler, ob die Anwendung eine dbusSchnittstelle hat. Das würde Ihren Plan viel einfacher machen.
user1146332
1
@ user1146332 Ich benutze xdotoolfür verschiedene Aufgaben ohne Probleme. Ich weiß nicht, worauf genau ein Schmerz als ein Vergnügen beruht.
LinuxSecurityFreak
Ich verwende xdotool in einer ähnlichen Situation, und eine Sache, die schmerzhaft ist, ist, dass es nicht auf das Fenster schauen kann, an das es Ereignisse sendet. Ein Problem ist das nicht deterministische Timing: Wenn das X-Programm einige Zeit benötigt, um ein Ereignis zu verarbeiten, und das nächste Ereignis ignorieren würde, wenn es zu früh kam, müssen Sie großzügige Schlafpausen hinzufügen, aber Sie wissen nie, wie lange es dauert.
Hans-Martin Mosner
3

xteEin Teil von xautomation ist ein weiteres Tool, mit dem Sie mithilfe der XTest-Erweiterung gefälschte X11-Eingaben generieren können.

Von der Homepage:

Steuern Sie X über die Befehlszeile für Skripte und führen Sie "Visual Scraping" durch, um Dinge auf dem Bildschirm zu finden. Die Steueroberfläche ermöglicht Mausbewegungen, Klicken, Auf- / Ab-Tasten, Auf- / Ab-Tasten usw. und verwendet die XTest-Erweiterung, damit Sie nicht die lästigen Probleme haben, die xse hat, wenn Apps gesendete Ereignisse ignorieren. Das visgrep-Programm findet Bilder in Bildern und meldet die Koordinaten, sodass Programme auf dem Bildschirm Schaltflächen usw. finden können, auf die sie klicken können.

gioele
quelle
0

Xte funktioniert, aber es ist wirklich alt. xdotool befindet sich zumindest in der aktiven Entwicklung.

Ich habe viel über das Generieren von X Windows-Ereignissen studiert, nominell um ein Tastaturmakroprogramm zu entwickeln, das Zeichenfolgen eingeben kann, oder die Zwischenablage in Anwendungen, in denen Sie normalerweise kein Einfügen verwenden können.

Hinweise zur Behandlung von X-Fensterereignissen ... http://www.ict.griffith.edu.au/anthony/info/X/event_handling.txt

Tastaturmakro (mit xte oder xdotool http://www.ict.griffith.edu.au/anthony/software/#keyboard_macro

Anthony
quelle
Gute Infos in den Links, warum hat jemand diese Antwort abgelehnt? +1, aber es ist besser, die Zusammenfassung der Apps am Anfang des Artikels zu einem niedrigeren Preis einzuschließen.
Badr Elmers