ターミナルエミュレータ、ウィンドウマネージャ、およびXサーバープロセス間のサーバーとクライアントの関係は何ですか?

ターミナルエミュレータ、ウィンドウマネージャ、およびXサーバープロセス間のサーバーとクライアントの関係は何ですか?
  1. APUE(下図参照)では、ターミナルエミュレータプロセスとウィンドウマネージャ(openboxなど)プロセスはどのように通信しますか?ターミナルエミュレータプロセスは、Unixドメインソケットベースのウィンドウマネージャプロセスのクライアントですか?
  2. Xサーバープロセスは、ターミナルエミュレータプロセスとウィンドウマネージャプロセスとどのように関連していますか?具体的には:

    xlsclients出力にが含まれていますlxterminal。これは、ターミナルエミュレータプロセスがXサーバー上のクライアントであることを意味しますか?

    $ xlsclients -a |  grep -i lxterminal
    ocean  lxterminal
    

    xlsclients出力にはウィンドウマネージャプロセスは含まれません。これは、ウィンドウマネージャプロセスがXサーバーのクライアントではないという意味ですか?

    $ xlsclients -a |  grep -i openbox
    $
    

ここに画像の説明を入力してください。

答え1

xlsclientsWM_CLIENT_MACHINEトップウィンドウ(ルートウィンドウのサブウィンドウまたはプロパティを含むウィンドウ)に設定とプロパティを一覧表示する簡単なアプリケーションです。WM_COMMANDWM_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そしてヤンク。クライアントはウィンドウを「所有」しません。すべてのクライアントは、ウィンドウのプロパティの設定とインポートを含みますが、これらに限定されず、すべてのウィンドウですべての操作を実行できます。

答え2

APUEが何を意味するのかわからず、インターネット検索で役に立つ情報が見つかりませんでしたxtermxterm端末エミュレータが複数表示されるのを停止するには(たとえば、タブのサブウィンドウで)、APUEはそのようなプログラムです。

1) ターミナルエミュレータは一般的なXアプリケーションであるため、他のXアプリケーションと同様にXサーバを介して間接的にXウィンドウマネージャと通信します。詳細は複雑であり、X プロパティ、X イベント、その他が含まれます。接続が間接的であるため、どのようなクライアント - サーバー関係もUnixドメインソケットも含まれません。

2)端末エミュレータを含むすべてのXアプリケーションは、顧客X仕える人、同じシステムで実行している場合は Unix ドメイン ソケットを介して、そうでない場合はネットワークを介して。はい、xlsclients名前が示すように、接続されているXサーバー上のすべてのクライアントアプリケーションを一覧表示します。

3) X ウィンドウマネージャは、openboxX サーバに接続したときに特殊なコマンドを実行する X アプリケーションです。したがって、Xウィンドウマネージャは次のようになります。顧客X仕える人(「顧客」の興味深い定義に固執しない限り)上記のようにコミュニケーションします。 「クライアント」の下にリストされていないと、xlsclientsXサーバーはそれを特別な方法で処理するためです。実際、メカニズムは不明です(xlsclientsフィルタリング中またはXサーバー自体がフィルタリング中である可能性があります)。

編集する

Xクライアント(少なくとも私の視点では)は、ウィンドウを表示しなくてもXサーバーへの接続を開くすべてです。 Xサーバーに問い合わせる他のコマンドと同様に、Xクライアントの場合も同様ですxlsclients(実行中の場合)。

「制御端末」は完全に独立した概念です。制御端末を使用して(少なくとも最初は)Xアプリケーションを起動できます。これは、コマンドラインからXアプリケーションを起動する場合の一般的なケースです。ただし、Xアプリケーションは、Xディスプレイマネージャや制御端末なしで実行されるウィンドウマネージャなどの他のXクライアントなど、制御端末なしで実行することもできます。

関連情報