2012-03-21 12 views
3

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

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

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

+1

X端末が「ローカル」ウィンドウを開き、WMによって装飾されているように見える場合は、さらに不吉なことです。 –

答えて

2

メイン通信mechani smはウィンドウのプロパティ経由です。それを見る出発点はICCCM、特にChapter 4です。これは、ウィンドウの装飾やボタンのようなものをカバーします。

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

さらに、ウィンドウマネージャには特別な権限があります。つまり、すべてのウィンドウ構成、サイズ変更およびマッピング要求を表示および傍受することができます。これはリダイレクションと呼ばれます。 here。あなたはこの種のコミュニケーションに主に関心を持っていると思います。

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

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

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のマニュアルprogamming - 特に第9章を、 10および14:

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

関連する問題