3

GUI ツールキット (Qt、GTK など) をウィンドウ マネージャーと連携させる基本的なメカニズムは何ですか?

私の知る限り、GUI ツールキットは、ウィンドウ マネージャーを必要とせずに独自のメイン ウィンドウを描画できます。ただし、私を混乱させるポイントは、ウィンドウマネージャーが x サーバーで「新しいウィンドウ要求」を検出し、このウィンドウの周りにそのフレーム、タイトルなどを描画するタイミングと方法です。確かに、ある種の暗黙の調整が必要です。ただし、コーディングの観点からは、ウィンドウ マネージャーの初期化は GUI ツールキットに対して完全に透過的に見えます。

GUI ツールキットとウィンドウ マネージャの両方が x ウィンドウの 2 つのピア クライアントであるというのは本当ですか? 新しいウィンドウの作成プロセスに関与するためにウィンドウマネージャーを呼び出す (通知する) のは x サーバーの責任ですか? この場合、ウィンドウ マネージャがない場合、「アプリケーション ウィンドウ」の位置は誰が決定するのでしょうか。

4

2 に答える 2

2

主な通信メカニズムは、Windows プロパティ経由です。それを見るための出発点は、 ICCCM、特に第 4 章です。これは、ウィンドウの装飾やボタンなどをカバーしています。

最新のデスクトップは、ICCCM で説明されている規則を大幅に拡張しています。詳細については、standards/freedesktop.org/wm-specを参照してください。これらの拡張機能は、ページャーやタスクバーなどをカバーしています。

さらに、ウィンドウ マネージャには特別な権限があります。つまり、すべてのウィンドウの構成、サイズ変更、およびマッピングの要求を確認してインターセプトできます。これはリダイレクトと呼ばれます。たとえば、こちらを参照してください。あなたは主にこの種のコミュニケーションに興味があると思います。

一度に 1 つのクライアントのみがリダイレクトを実行できます。このクライアントはウィンドウ マネージャーとして定義されます。他のすべての点で、クライアントはピアです。

すべてのウィンドウ作成/構成リクエストには、ウィンドウ座標が含まれます。ウィンドウ マネージャーは、これらの座標を傍受して変更できます。ウィンドウ マネージャがない場合、要求はアプリケーションが送信するのと同じように X サーバーによって実行されます。

于 2014-03-09T09:56:23.153 に答える
0

ええと、すべては最終的にXサーバーを介して調整されます。読んでみれば、あなたが探している答えが見つかると思います...

いくつかの一般的な情報:

http://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture#Inter-client_communication

http://en.wikipedia.org/wiki/X_window_manager#How_X_window_managers_work

Xlibプログラミングマニュアル-特に第9章、第10章、および第14章:

http://tronche.com/gui/x/xlib/

于 2012-04-01T23:04:35.100 に答える