- APUE(下図参照)では、ターミナルエミュレータプロセスとウィンドウマネージャ(openboxなど)プロセスはどのように通信しますか?ターミナルエミュレータプロセスは、Unixドメインソケットベースのウィンドウマネージャプロセスのクライアントですか?
Xサーバープロセスは、ターミナルエミュレータプロセスとウィンドウマネージャプロセスとどのように関連していますか?具体的には:
xlsclients
出力にが含まれていますlxterminal
。これは、ターミナルエミュレータプロセスがXサーバー上のクライアントであることを意味しますか?$ xlsclients -a | grep -i lxterminal ocean lxterminal
xlsclients
出力にはウィンドウマネージャプロセスは含まれません。これは、ウィンドウマネージャプロセスがXサーバーのクライアントではないという意味ですか?$ xlsclients -a | grep -i openbox $
ベストアンサー1
xlsclients
WM_CLIENT_MACHINE
トップウィンドウ(ルートウィンドウのサブウィンドウまたはプロパティを含むウィンドウ)に設定とプロパティを一覧表示する簡単なアプリケーションです。WM_COMMAND
WM_STATE
それがすべてです。魔法はありません。
InputOnly
たとえば、私は(目に見えない)ウィンドウをルートウィンドウの子として開く私のウィンドウマネージャを使用しています。ヤンク~の気象検査。これらの2つのプロパティを設定すると、期待したことが起こります;-)
$ xprop -id 0x400001 -f WM_CLIENT_MACHINE 8s -set WM_CLIENT_MACHINE kgbvax
$ xprop -id 0x400001 -set WM_COMMAND /sbin/reboot
$ $ xlsclients
kgbvax /sbin/reboot
...
しかし、あなたの質問に答えるには、次のようにします。
ターミナルエミュレータプロセスとウィンドウマネージャ(openboxなど)プロセスはどのように通信しますか?ターミナルエミュレータプロセスは、Unixドメインソケットベースのウィンドウマネージャプロセスのクライアントですか?
どちらもX11サーバーのクライアントであり、通常はXSendEvent(3)を使用してクライアントメッセージを送信し、ウィンドウ内のプロパティを設定して通信します。契約内容は以下の通りです。OOそしてヤンク。クライアントはウィンドウを「所有」しません。すべてのクライアントは、ウィンドウのプロパティの設定とインポートを含みますが、これらに限定されず、すべてのウィンドウですべての操作を実行できます。