Получение имен элементов меню/виджетов XWindows GUI из командной строки

Получение имен элементов меню/виджетов XWindows GUI из командной строки

Я только что узнал особачий хвост, и он может разрешить перечисление пунктов меню/виджетов приложения с графическим интерфейсом из командной строки; например (черезТестирование/Автоматизация/DogtailTutorial - Ubuntu Wiki):

%> python
>>> from dogtail import tree
>>> gcalctool = tree.root.application('gcalctool')
>>> gcacltool.dump()
# You'll see something like: 
{"gcalctool" application}
 Node roleName='frame' name='Calculator  - Scientific' description=''
  Node roleName='filler' name='' description=''
   Node roleName='menu bar' name='' description=''
    Node roleName='menu' name='Calculator' description='' text='Calculator'
     click
     Node roleName='tear off menu item' name='' description='' text=''
      click
     Node roleName='menu item' name='Quit' description='' text='Quit'
      click
     Node roleName='menu item' name='Empty' description='' text='Empty'
      click
    Node roleName='menu' name='Edit' description='' text='Edit'
     click

Однако он использует (насколько я могу судить) вспомогательные/"технологии доступности" Gnome Desktop. Поэтому мне стало интересно - есть ли такой инструмент (который может хотя бы перечислять имена виджетов), который работает на более низком уровне - например, на уровне XWindows?

Я предполагаю (но не знаю), что XWindows сама по себе не предлагает какой-либо стандартной структуры виджетов, и поэтому было бы сложно написать инструмент для запроса имен виджетов GUI на уровне X-Windows; это правильно? (Я представляю себе что-то вроде xdotoolили wmctrl, но ни один из них не может исследовать «внутрь» приложения GUI).

Если да, то существует ли инструмент, работающий с большинством сред рабочего стола (Gnome, KDE...), который мог бы запрашивать/выводить список имен виджетов запущенного приложения с графическим интерфейсом, но без использования уровня технологий специальных возможностей?

решение1

Двадцать лет назад ответ был бы таким:редакторы. Классические программы X Window использовалиX-инструментарий, который предоставляет стандартный способ определения иерархии виджетов и ее настройки черезРесурсы. Многие программы, использующие X toolkit, реализуют протокол Editres, который позволяет приложениям запрашивать дерево виджетов и значения ресурсов другого приложения.

Современные виджеты-тулки, такие как Gtk и Qt, не поддерживают ресурсы X, не говоря уже о протоколе Editres. Так что вам не повезло. Кто-то предложилПоддержка Editres в Gtk+но патч так и не был принят, и приложение должно было бы включать дополнительную поддержку, даже если бы библиотека имела необходимые расширения. Для Qt (т.е. приложений KDE),этот старый пост из списка рассылки QtпредполагаетИсполнитель КД, но я понятия не имею, может ли он на самом деле это сделать.

Связанный контент