クライアントサイド・デコレーション(CSD)とは、グラフィカルなアプリケーションにおけるウィンドウの装飾を、従来
ウィンドウマネージャが担当していたのに対し、アプリケーション自身が描画する方式のことです。これにより、
タイトルバーのデザインや機能を自由にカスタマイズすることが可能になります。
定義
Linuxや
Unix系OSにおける「クライアントサイド」という用語は、
X Window Systemに由来します。アプリケーションがウィンドウを生成し、それをXサーバに送信する際、そのアプリケーションが「クライアント」と見なされます。この逆がサーバサイド・デコレーション(SSD)ですが、実際には
ウィンドウマネージャがデコレーションを担当するため、
X Window Systemにおいては厳密な意味での「サーバ」とは異なります。
実装
GTK
GTKは、GtkHeaderBarウィジェットを通じて、Linuxで最初にクライアントサイド・デコレーションを実装したGUIツールキットです。GtkHeaderBarは、
タイトルバー、メニューバー、
ツールバーを統合して、アプリケーションのコンテンツ領域を最大化します。これにより、デスクトップPCから小型デバイスまで、多様なフォームファクタに対応した柔軟なUIを実現し、
GNOME Shellをはじめ、多くのGNOMEアプリケーションで採用されています。
UWP
ユニバーサルWindowsプラットフォーム(UWP)アプリケーションでは、独自の
タイトルバーを自由に描画する方式が選択できます。
macOS
macOSでは、Application KitベースのアプリケーションがNSWindowウィジェットを使用する際に、クライアントサイド・デコレーションがサポートされます。
Electron
Electronは、フレームレスウィンドウのオプションを提供しており、アプリケーション側で独自の陰影描画を行うことが可能です。
Deepin Tool Kit
Deepin Tool Kitは、
Qt5ベースのウィジェットツールキットであり、
Deepin Desktop Environmentで使用されています。
アプリケーション
クライアントサイド・デコレーションをサポートする著名なアプリケーションには、以下のようなものがあります。
Steam: 独自のウィジェットツールキット「VGUI」を使用
Firefox
Google Chrome
ディスプレイサーバ
Wayland
Waylandは、クライアントサイド・デコレーションを前提に設計されていますが、xdg-decorationプロトコルもサポートしています。これにより、アプリケーションがウィンドウマネージャにサーバサイド・デコレーションのサポート状況を問い合わせ、必要に応じてそちらを利用することも可能です。GNOME Shellで使用されるMutterはクライアントサイド・デコレーションのみをサポートしますが、KWinは両方のデコレーションをサポートしています。
歴史
2008年:
アドビがPhotoshop CS4でクライアントサイド・デコレーションを採用。
2012年: マイクロソフトがMetroデザイン言語でCSDを採用し、「戻る」ボタンなどのツールバーオブジェクトをタイトルバーに配置。
2013年: GTKプロジェクトが、クライアントサイド・デコレーションをサポートしたGTK 3.10をリリース。
関連項目
リボン (GUI)
ウィンドウ・デコレーション
外部リンク
Client-Side Decorations Initiative
GtkHeaderBar: GTK3 Reference Manual