クライアントサイド・デコレーション

クライアントサイド・デコレーションによりウィンドウの制御ボタンを独自に描画するアプリケーションの例(GtkHeaderBarウィジェットを使用するGNOME Files、2014年1月)

クライアントサイド・デコレーション英語: client-side decoration、略称: CSD)とは、グラフィカルアプリケーションソフトウェアにおけるウィンドウ・デコレーション(英語版)の描画について、歴史的にウィンドウマネージャが担当していたのに対し、各アプリケーションが独自に担当することを許容するという概念である[1]

伝統的なタイトルバーを持たないアプリケーションを指すためにクライアントサイド・デコレーションという語句が用いられることがあるが、これは誤用であり、最小限のタイトルバーを持つアプリケーションでもクライアント側でのデコレーションは可能である[2]

伝統的なサーバサイド・デコレーションの代わりにクライアントサイド・デコレーションを使用することにより、各アプリケーションが独自のタイトルバーを描画できるため、ウィンドウ・デコレーションの広範囲なカスタマイズや、標準的なウィンドウマネージャでウィンドウを最大化した場合に広大な空きスペースとなっていた領域への機能(GUIウィジェット)の追加などが実現できる[3]

定義

LinuxやUnix系のオペレーティングシステムでは、「クライアントサイド・デコレーション」という呼称はX Window Systemに由来し、クライアントとはすなわちウィンドウを生成してXサーバに送るアプリケーションである。その逆は「サーバサイド・デコレーション」(server-side decoration、SSD)と呼ばれるが、X Window Systemであっても実際にデコレーションを描画するのはウィンドウマネージャであり、「サーバ」ではない。

実装

ウィジェット・ツールキット

GTK

GTKは、GtkHeaderBarウィジェットにより、Linuxで最初にクライアントサイド・デコレーションを実装したGUIツールキットである[4]

GtkHeaderBarでは、より多くの領域をアプリケーション本体に割り当て、無駄な空白部分の面積をできる限り削減するために、タイトルバーメニューバーツールバーを統合して単一の水平のバーとして描画する。これにより、アプリケーションから伝統的なデスクトップでの使用を前提としていた箇所が削除され、デスクトップPCからスモールフォームファクタ機器まで、様々なフォームファクタを通じたUIの柔軟性やUXの一貫性の確保に貢献する。これらはGNOME Shellで最優先にサポートされるほか、GNOME applicationsでも幅広く使用されている。

UWP

ユニバーサルWindowsプラットフォーム(UWP)アプリケーションでは、独自のタイトルバーを描画する方式が選択できる[5]

macOS

macOSでは、Application Kit(英語版)ベースのアプリケーションがNSWndowウィジェットを使用する場合に、クライアントサイド・デコレーションをサポートする[6]

Electron

Electronにはフレームレス・ウィンドウ(ツールバー・メニューバー・タブを描画しない)のオプションがあり、アプリケーション側で独自に陰影の描画を担当する[7]

Deepin Tool Kit

QtベースのアプリケーションであるDeepin File Managerのクライアントサイド・デコレーションによる画面

Deepin Tool KitはQt5ベースのウィジェット・ツールキットであり、Deepin Desktop Environmentで使用されている。

アプリケーション

クライアントサイド・デコレーションをサポートする著名なアプリケーションを以下に挙げる。

ディスプレイサーバ

Wayland

Waylandは(ウィンドウ陰影を含め)クライアントサイド・デコレーションを前提として設計されているが、xdg-decorationとして知られるプロトコルもオプションでサポートしており、これはアプリケーション(クライアント)がウィンドウマネージャに対してサーバサイド・デコレーションをサポートしているかどうかを照会し、もしサポートしていればクライアントに使用させるというものである[8]。GNOME Shellで使用されるコンポジタであるMutterは、Waylandのもとではクライアントサイド・デコレーションのみをサポートするが[9]KWinはクライアントサイドおよびサーバサイドのいずれのデコレーションもサポートする。

歴史

  • 2008年、アドビはクライアントサイド・デコレーションを採用するPhotoshop CS4をリリースした。
  • 2012年、マイクロソフトMetroデザイン言語でクライアントサイド・デコレーションを採用し、「戻る」ボタンなどのツールバー・オブジェクトをウィンドウのタイトルバーに配置した。
  • 2013年、GTKプロジェクトはクライアントサイド・デコレーションのサポートが追加されたGTK 3.10をリリースした[10]

脚注

[脚注の使い方]
  1. ^ “Client-side decorations, continued” (英語). blogs.gnome.org. 2019年1月17日閲覧。
  2. ^ “A small note on window decorations | Florian Müllner” (英語). 2019年11月13日閲覧。
  3. ^ “The CSD Initiative Is Pushing For Apps To Abandon Title Bars In Favor Of Header Bars - Phoronix”. Phoronix. 2018年1月28日閲覧。
  4. ^ “GtkHeaderBar: GTK+ 3 Reference Manual”. developer.gnome.org. 2019年1月17日閲覧。
  5. ^ mijacobs. “Title bar customization - Windows UWP applications” (英語). docs.microsoft.com. 2019年1月17日閲覧。
  6. ^ “NSWindow - AppKit | Apple Developer Documentation”. developer.apple.com. 2019年6月7日閲覧。
  7. ^ “Frameless Window | Electron” (英語). electronjs.org. 2019年1月17日閲覧。
  8. ^ Wayland protocol development, Wayland, (2019-10-07), https://github.com/wayland-project/wayland-protocols 2019年11月13日閲覧。 
  9. ^ Bernard, Tobias. “Introducing the CSD Initiative – Space and Meaning”. GNOME. 2018年1月28日閲覧。
  10. ^ “GTK+ 3.10 released [LWN.net]”. lwn.net. 2019年1月17日閲覧。

関連項目

  • リボン (GUI)
  • ウィンドウ・デコレーション(英語版)

外部リンク

  • Client-Side Decorations Initiative
  • GtkHeaderBar: GTK3 Reference Manual
GUIウィジェット
コマンド入力
データ入出力
表示
コンテナ
  • アコーディオンメニュー(英語版)
  • ツリーメニュー(英語版)
  • 折り畳み
  • フレーム/フィールドセット(英語版)
  • メニューバー
  • パネル(英語版)
  • ポップオーバー (GUI)(英語版)
  • リボン
  • ツールバー
  • タブ
  • タイトルバー
  • ウィンドウ
  • クライアントサイド・デコレーション
ナビゲーション
特殊ウィンドウ
関連項目
コミュニティ
人物
その他
アプリケーション
テクノロジー
関連記事
  • カテゴリ カテゴリ
  • コモンズ コモンズ