私はいくつかの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」と呼ばれているのですか?サーバー側の装飾は何でしょうか? (または別の種類の装飾?)
従来、GUIアプリケーションはウィンドウのコンテンツを担当しますが、タイトルバー、閉じるボタン、境界線、サイズ変更グリップなどは担当しません。これらはすべてウィンドウマネージャーによって追加され、装飾。
(ウィンドウマネージャーの例はTWM、Fluxbox、Metacity、Mutterなどです。)
これは簡単な説明ですが、デスクトップテーマの実装方法です。ウィンドウはタイトルバーを認識していないため、ウィンドウマネージャーは現在のテーマに一致するタイトルバーをウィンドウに配置します。ユーザーがテーマを変更すると、ウィンドウはタイトルバーを変更するだけです。アプリケーションは気にする必要はありません。
一方、アプリケーションがタイトルバーをカスタマイズすることはまったく不可能です。
近年では、ウィンドウマネージャーに「いいえ、装飾は必要ありません」と伝え、代わりに独自のタイトルバーをレンダリングすることが可能になりました。これがGtkHeaderBar
の目的です。Chromiumがブラウザのタブで行うように、タイトルバーにカスタムコントロールを配置することで、画面領域をさらに節約できます。これはクライアント側の装飾と呼ばれます。
(技術的にはこれは常に可能でしたが、ユーザーが期待どおりにウィンドウ装飾のすべての機能を自分でエミュレートする必要があったため、間違いを犯しやすくなりました。GtkHeaderBar
がそれを行います。)
これは両刃の剣です。クライアント側の装飾があるため、アプリケーションはウィンドウマネージャーのテーマの変更に反応しません。
名前client-sideは、Xの用語に由来します。ここで、clientは、ウィンドウをレンダリングしてXserverに送信するアプリケーションです。