web-dev-qa-db-ja.com

「クライアント側の装飾」とは何ですか?

私はいくつかのWebスタッフといくつかのコマンドラインアプリケーションを行った学生で、GUIを試してみました。私は http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html を読み、この文を偶然見つけました:

GTK +がクライアント側の装飾をサポートするようになったため、Gtk.HeaderBarを(ウィンドウマネージャーによってレンダリングされる)タイトルバーの代わりに使用できます。

誰かが「クライアント側の装飾」とは何か説明してもらえますか?

読書から http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/ 「クライアント側の装飾」はテーマのようなものだと思います。ウィンドウマネージャーがGTK +とどのように相互作用するかを誰かが説明できますか?なぜ「clientside decoration」と呼ばれているのですか?サーバー側の装飾は何でしょうか? (または別の種類の装飾?)

23
Martin Thoma

従来、GUIアプリケーションはウィンドウのコンテンツを担当しますが、タイトルバー、閉じるボタン、境界線、サイズ変更グリップなどは担当しません。これらはすべてウィンドウマネージャーによって追加され、装飾

(ウィンドウマネージャーの例はTWM、Fluxbox、Metacity、Mutterなどです。)

これは簡単な説明ですが、デスクトップテーマの実装方法です。ウィンドウはタイトルバーを認識していないため、ウィンドウマネージャーは現在のテーマに一致するタイトルバーをウィンドウに配置します。ユーザーがテーマを変更すると、ウィンドウはタイトルバーを変更するだけです。アプリケーションは気にする必要はありません。

一方、アプリケーションがタイトルバーをカスタマイズすることはまったく不可能です。

近年では、ウィンドウマネージャーに「いいえ、装飾は必要ありません」と伝え、代わりに独自のタイトルバーをレンダリングすることが可能になりました。これがGtkHeaderBarの目的です。Chromiumがブラウザのタブで行うように、タイトルバーにカスタムコントロールを配置することで、画面領域をさらに節約できます。これはクライアント側の装飾と呼ばれます。

(技術的にはこれは常に可能でしたが、ユーザーが期待どおりにウィンドウ装飾のすべての機能を自分でエミュレートする必要があったため、間違いを犯しやすくなりました。GtkHeaderBarがそれを行います。)

これは両刃の剣です。クライアント側の装飾があるため、アプリケーションはウィンドウマネージャーのテーマの変更に反応しません。

名前client-sideは、Xの用語に由来します。ここで、clientは、ウィンドウをレンダリングしてXserverに送信するアプリケーションです。

39
ptomato