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

2

Acabei de aprender sobre dogtail , e ele pode permitir a enumeração de itens de menu / widgets de um aplicativo GUI a partir da linha de comando; por exemplo (via Teste / 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 eu posso ver) tecnologias assistivas / de "acessibilidade" do Gnome Desktop. Então, eu estava imaginando - existe essa 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 não oferece nenhum framework 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? (Eu imagino algo como xdotool ou wmctrl , mas nenhum deles pode investigar "dentro" do aplicativo GUI).

Se assim for - existe uma ferramenta que pode trabalhar com a maioria das estruturas de ambiente de desktop (Gnome, KDE ...) que poderiam consultar / listar os nomes dos widgets de uma aplicação GUI em execução, mas sem usar a camada de tecnologias de acessibilidade? p>     

por sdaau 18.10.2013 / 05:03

1 resposta

1

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

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

    
por 20.10.2013 / 03:58