Взаимодействие с приложениями X программно

8

У меня есть приложение, которое построено с использованием GTK +. Приложение имеет очень простой интерфейс. При запуске всегда открывается одно и то же окно с несколькими элементами управления вводом.

Мы хотим написать скрипт для заполнения текста в нескольких полях, установите флажок и нажмите кнопку. Довольно просто, и было бы легко сделать, если бы была доступна версия приложения из командной строки (но это не так).

Каков наилучший способ программного взаимодействия с приложением X?

Том Мартинал
источник

Ответы:

9

Дайте xdotool ( страница справочника по Ubuntu ).

Это очень мощный и должен быть в состоянии сделать все, что вам нужно.

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

SLM
источник
Я думаю, что использование xdotoolдолжно рассматриваться только в реальных чрезвычайных случаях! Написание чего-то серьезного xdotool- это скорее боль, чем удовольствие. Прежде чем пытаться xdotoolспросить разработчика, имеет ли приложение dbusинтерфейс. Это сделало бы ваш план намного проще.
user1146332
1
@ user1146332 Я использую xdotoolдля различных задач без проблем. Я не знаю, на чем именно основана боль, а не удовольствие .
LinuxSecurityFreak
Я использую xdotool в аналогичной ситуации, и одной из неприятностей является то, что он не может смотреть в окно, в которое он отправляет события. Одной из проблем является недетерминированная синхронизация: если программе X требуется некоторое время для обработки одного события, и она игнорирует следующее событие, когда оно наступило слишком рано, вам необходимо добавить большие паузы сна, но вы никогда не знаете, как долго это будет продолжаться.
Ганс-Мартин Моснер
3

xteЧасть xautomation - это еще один инструмент, который вы можете использовать для генерации ложного ввода X11 с использованием расширения XTest.

С домашней страницы:

Управляйте X из командной строки для сценариев и выполняйте «визуальный анализ», чтобы находить объекты на экране. Интерфейс управления позволяет перемещать мышь, нажимать кнопки, вверх / вниз, клавиши вверх / вниз и т. Д. И использует расширение XTest, чтобы у вас не было досадных проблем, возникающих у xse, когда приложения игнорируют отправленные события. Программа visgrep находит изображения внутри изображений и сообщает координаты, позволяя программам находить кнопки и т. Д. На экране, на которые можно нажать.

Gioele
источник
0

Xte работает, но он действительно старый. xdotool как минимум находится в активной разработке.

Я много занимался созданием событий X Windows, номинально для разработки макропрограммы клавиатуры, которая может печатать строки, или буфера обмена в приложениях, которые обычно не позволяют использовать вставку.

Примечания по обработке событий в X Window ... http://www.ict.griffith.edu.au/anthony/info/X/event_handling.txt

Макрос клавиатуры (с использованием xte или xdotool http://www.ict.griffith.edu.au/anthony/software/#keyboard_macro

Энтони
источник
хорошая информация в ссылках, почему кто-то отклонил этот ответ? +1, но лучше будет включить список приложений, найденных в начале статьи, меньше.
Бадр Элмерс