ウィンドウの装飾エンジンと Aurorae V2 の開発
Aurorae V2 の開発が以下で紹介されています。ウィンドウの装飾エンジン
ウィンドウの装飾エンジンは、文字通りウィンドウの装飾を描画するソフトウェアです。装飾エンジンは実装や装飾テーマに基づいて、ウィンドウの装飾を描画します。
今回紹介している Aurorae は、KDE 環境向けの装飾エンジンです。
KDE Plasma には装飾エンジンを実装するための KDecoration ライブラリーがあります。
KDecoration ライブラリーは C++ で実装されており、KDE Plasma のデフォルトの Breeze や今回紹介している Aurorae は、いずれも KDecoration ライブラリーを利用して実装されています。
Breeze と Aurorae の違い
Breeze は Breeze スタイルに準拠した装飾を描画する装飾エンジンです。Aurorae は装飾テーマに従って装飾を描画する装飾エンジンです。
そのため Aurorae は Breeze と異なり、サードパーティーが装飾テーマを作成することで、広範にウィンドウの装飾をカスタマイズできます。
ちなみにサードパーティーが作成した装飾テーマは、以下からダウンロード可能です。
Aurorae の特徴
もう少し Aurorae の特徴を掘り下げてみましょう。Aurorae は QML と SVG ベースのテーマをサポートしています。
QML テーマを使用する場合、ウィンドウの装飾の外観と動作を定義する QML コードを記述します。
QML テーマは数行のコードで外観や動作を変更でき、優れたデザインを容易に実現できます。
その一方で SVG テーマを使用する場合、ウィンドウのフレームと各種ボタンの外観を指定する SVG ファイルをそれぞれに複数用意する必要があります。
SVG テーマは実際には QML テーマとして構築されています。
Aurorae の課題
Aurorae は10年以上も前に登場した装飾エンジンですが、近年はあまり活発に開発されていません。例えば UI の流行りとして丸みを帯びたデザインがありますが、Aurorae に UI のトレンドに追従するような新機能の実装は行われていません。
またパフォーマンスも Breeze と比較すると、Aurorae のパフォーマンスはひどく劣っています。
加えて QML テーマで作動する QML は動作コストが高く、パフォーマンスに影響を与えます。
また QtQuick の仕組み上、適切な分数スケーリングのサポートが非常に困難です。
これは QtQuick を使用する通常のアプリケーションではほぼ問題ありませんが、Aurorae のユースケースでは、個々のピクセルがどこに描画されるかを完全に制御する必要があるため、このような課題が発生します。
Aurorae V2
前置きが長くなりましたが、本題の Aurorae V2 です。端的に言えば、Aurorae の作り直しです。
パフォーマンスの改善
上記の課題でも挙げたように Aurorae にはパフォーマンスの課題があります。Aurorae V2 ではパフォーマンスを改善し、KWin がウィンドウをリサイズしても問題が起きないようにします。
ちなみにパフォーマンスの課題は QtQuick にパフォーマンス上の問題があるということではなく、QML デコレーションのレンダリング方法に原因があります。
現在のレンダリング方法は、QtQuick シーンをオフスクリーンテクスチャーでレンダリングし、そのコンテンツをダウンロードした後、別のテクスチャーにそのコンテンツをアップロードする処理になっています。
この処理の繰り返しによりパフォーマンスが低下しますが、KDecoration API の制約上、この一連の処理は必要な処理になっています。
分数スケーリングのサポートに向けた改善
次に Aurorae V2 では分数スケーリングのサポートに向けた改善が取り組まれます。ウィンドウの境界線のズレや装飾とウィンドウのコンテンツ間の隙間を修正するなど、分数スケーリングのサポートに向けた道を切り開くことが目的です。
テーマのカスタマイズを容易に
サードパーティーがトレンドやモダンさを反映したテーマを作成できるように、より多くのツールを提供できるよう、将来に向けた基盤を構築していきます。すでに作業は進んでいる
すでに Aurorae V2 の開発作業は進められています。パフォーマンスの改善
Aurorae V2 では直接 KDecoration と KSvg API を利用して構築されています。これにより Aurorae の装飾処理は非常に軽量になり、パフォーマンスが大幅に向上しました。
分数スケーリング
一部の分数スケーリングの問題は既に修正されていますが、まだ改善な作業が残っています。CPU によるレンダリングと GPU によるレンダリング
ウィンドウの装飾は CPU でレンダリングされます。すべてを GPU で処理できれば理想的ですが、現時点で CPU によるレンダリングは大きなボトルネックになっていません。
将来的に GPU によるレンダリングを活用する可能性もありますが、現時点では優先度は高くありません。
QML テーマ と SVG テーマ
QML テーマ自身がそれほど多く存在していないため、QML テーマは従来の Aurorae V1 を利用してもらうことになります。ただし Aurorae V1 の将来性に関しては不透明です。
SVG テーマでは Aurorae V2 を利用することになります。
ちなみに Aurorae V1 と Aurorae V2 は共存できます。
今後の取り組み
今後も継続して Aurorae V2 の完成に向け開発及び改良作業が続きます。Aurorae V3
さらに次の Aurorae V3 の開発も検討されています。Aurorae V3 ではテーマの制限の解消や、ウィンドウ下部の角やアウトラインを丸めるといった新機能のサポートが予定されています。

