
私は今、ドッグテール、コマンドラインからGUIアプリケーションのメニュー項目/ウィジェットを列挙することができます。たとえば、(テスト/自動化/Dogtailチュートリアル - 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 デスクトップの補助/「アクセシビリティ テクノロジ」を使用しています。そこで疑問に思ったのですが、より低いレベル (たとえば XWindows レベル) で動作する (少なくともウィジェット名を列挙できる) ツールはあるのでしょうか?
XWindows 自体は標準ウィジェット フレームワークを提供していないと思いますが (ただし、よくわかりません)、そのため、X-Windows レベルで GUI ウィジェット名を照会するツールを作成するのは難しいでしょう。これは正しいでしょうか? (xdotool
またはのようなものを想像していますwmctrl
が、どちらも GUI アプリの「内部」を調べることはできません)。
もしそうなら、アクセシビリティ テクノロジ レイヤーを使用せずに、実行中の GUI アプリのウィジェット名を照会/一覧表示できる、ほとんどのデスクトップ環境フレームワーク (Gnome、KDE ...) で動作できるツールはありますか?
答え1
20年前なら答えはこうだっただろう編集者従来のXウィンドウプログラムは、X ツールキットウィジェット階層を定義し、それを設定する標準的な方法を提供します。リソースX ツールキットを使用する多くのプログラムは、アプリケーションが別のアプリケーションのウィジェット ツリーとリソース値を照会できるようにする Editres プロトコルを実装しています。
GtkやQtなどの最新のウィジェットツールキットは、EditresプロトコルはおろかXリソースもサポートしていません。つまり、運が悪いのです。誰かが提案したようにGtk+ でのエディタのサポートしかし、パッチは採用されず、ライブラリに必要な拡張機能があっても、アプリケーションは追加のサポートを組み込む必要がありました。Qt(つまりKDEアプリケーション)の場合、Qtメーリングリストからの古い投稿示唆するKDエグゼキューターしかし、実際にこれができるかどうかはわかりません。