デスクトップGUIとシェルの間の相互作用を観察するには?

デスクトップGUIとシェルの間の相互作用を観察するには?

たとえば、Ubuntuデスクトップウィジェットを介してボリュームを変更すると、シェルにコマンドを発行したりスクリプトを実行したりするとします。

実行中のコンテンツを表示できますか?

ベストアンサー1

通常、GUI の特定のアクションはシェルコマンドを呼び出しません。これは時々起こりますが、一般的なことではありません。代わりに、GUIとコマンドラインプログラム(シェルを含む)の両方が同じ基本プログラミングインタフェースを呼び出します。

プログラムが何をしているのか知りたい場合は、その文書またはソースコードを確認してください。観察することはできますが、把握するのは難しい場合があります。

Linuxでは、ストレスリストされたプログラムシステムコールプログラムで制作されました。プログラムのプロセスIDを見つけて(たとえば、コマンドを介してps xww)1234と言って実行します。

strace -p1234 -o widget.strace

観察したい操作を実行してからstraceを終了します(ターミナルで+ Ctrl)。C出力ファイルを見て調べます。たくさん見ました。Xサーバー(特定のファイル記述を呼び出すreadwriteGUI操作が原因で発生します。これがXサーバーで実行されている場合は、プロトコルをさらに分析する必要があります。次の方法でリモート通話を監視することもできます。Dバス;これを理解するには、dbus-monitor人間が読める D-Bus トラフィック追跡を取得するには実行してください。それ以外の場合は、プログラムが実行する他の操作を確認してください。

Ubuntuのサウンドは通常通過します。パルスオーディオ。アプリケーションはD-Busを使用してPulseaudioサーバーと通信します。 Pulseaudioには、ボリュームコントロールpaを含む名前で始まるプログラムへのコマンドラインインターフェースがあります。pavucontrol

おすすめ記事