Obtendo nomes de itens de menu/widgets da GUI do XWindows na linha de comando

Obtendo nomes de itens de menu/widgets da GUI do XWindows na linha de comando

Acabei de aprender sobrerabo de cachorro, e pode permitir a enumeração de itens de menu/widgets de um aplicativo GUI a partir da linha de comando; por exemplo (atravésTeste/Automação/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

No entanto, ele usa (até onde posso ver) tecnologias assistivas/"de acessibilidade" do Gnome Desktop. Então, eu queria saber - existe tal ferramenta (que pode pelo menos enumerar nomes de widgets) que funciona em um nível inferior - por exemplo, no nível XWindows?

Eu acho (mas não sei) que o XWindows por si só não oferece nenhuma estrutura de widget padrão - e, portanto, seria difícil escrever uma ferramenta para consultar os nomes dos widgets da GUI no nível do X-Windows; isso está correto? (Imagino algo como xdotoolor wmctrl, mas nenhum deles pode investigar "dentro" do aplicativo GUI).

Em caso afirmativo - existe uma ferramenta que pode funcionar com a maioria das estruturas de ambiente de desktop (Gnome, KDE ...) que pode consultar/listar os nomes dos widgets de um aplicativo GUI em execução, mas sem usar a camada de tecnologias de acessibilidade?

Responder1

Há vinte anos, a resposta teria sidoeditores. Os programas clássicos do X Window usavam oKit de ferramentas X, que fornece uma maneira padrão de definir uma hierarquia de widgets e configurá-la por meio derecursos. Muitos programas que usam o kit de ferramentas X implementam o protocolo Editres, que permite que os aplicativos consultem a árvore de widgets e os valores de recursos de outro aplicativo.

Kits de ferramentas de widget modernos como Gtk e Qt não suportam recursos X, muito menos o protocolo Editres. Então você está sem sorte. Alguém propôsSuporte a editores em Gtk+mas o patch nunca foi adotado e um aplicativo teria que incluir suporte adicional mesmo que a biblioteca tivesse as extensões necessárias. Para Qt (ou seja, aplicativos KDE),este post antigo de uma lista de discussão do QtsugereExecutor KD, mas não tenho ideia se ele realmente pode fazer isso.

informação relacionada