GNOME 41から導入されたLibadwaitaとはなにか、カスタムテーマ問題

※当サイトは広告収入で運営されているため広告が表示される場合があります。

まえがき

GNOMEにバージョン41から新たに「libadwaita」というライブラリが実装された。これはGTK3に使われていたモバイルデバイス向けの開発ライブラリ、libhandy をGTK 4向けに移植して機能を拡張したものだ。このライブラリによってGNOMEアプリケーションに一貫したデザイン言語を提供できるようにするのが狙いだ。

GNOME 42からはGNOMEの基本アプリケーションはLibadwaita+GTK4にほぼ置き換えられる予定なのでそれに向けて様々な動きが起きている。

Libadwaita採用の経緯

ここ20年、GNOMEはHIG(human interface guidelinesヒューマン・インターフェース・ガイドライン)に沿って開発が行われてきた。

このガイドラインに沿ってアプリケーションを開発するには開発者によるコードの最適化が必要で大変な労力だった。その結果、多くのUIコードのコピペが行われてしまいガイドラインから外れたUIはエラーが起きてしまっていた。さらにHIGは日々進化(変化)しているので開発当時は正しくコーディングされているにも関わらず時が経つにつれて不整合性が出てきてしまうということがあった。

このデザインが開発者によってアプリケーションの表示がまちまちになってしまう問題を解決するのがlibadwaitaの目的。

Libadwaitaで何ができる

LibadwaitaはGNOME上でのルックアンドフィールやウィジェットを一つのライブラリに一任することでGTKとGNOMEプロジェクトを分離するということをできるようになる。

従来の開発方法だとGNOMEのインターフェイスに変更を加えたい場合、GTKにも変更を施さねければならなかった。この方法だと開発に時間がかかる上、GNOMEアプリ以外のGTKアプリも影響を受けてしまう。libadwaitaはこういった問題を解決することができる。

Libadwaitaのアプローチはelementry OSのスタイルシートと似たものでエレメントに色を反映させやすくするためにPNGアセットを除去したり色の取り扱いを簡易化している。これだけではなくモダンなアニメーションや演出、リストやカードなどのウィジェット、モバイルデバイスでのタッチジェスチャーなどを提供してくれる。

LibadwaitaはGTK3アプリをGTK4に移植する必要があり、今移行するかどうか様子見しているデベロッパーも多そうだ。

カスタムテーマ問題

GNOMEコミュニティには何十年も前からテーマを改造するという文化が根付いている。GTKに組み込まれていたCSSスタイルシートを取り出して改造したものに置き換えるというやや強引なやり方でWindows XPで流行った改造テーマのようなものだ。

独自のテーマを持つというのは一目で他と差別化できるためディストリビューションにとって重要な要素だ。またLinuxコミュニティ自体がパーソナライゼーションを重きに置く。

このテーマの変更はLibadwaita導入以降ではやり方が変わってくるため、一部のディストリやユーザからは反発が起きている。実質GNOMEからの禁止通達にも等しいからだ。

特にPop!_OSを開発しているSystem76はLibadwaitaの導入が発表されてからプログラミング言語RUSTでCosmicという新たなデスクトップ環境を開発することを表明。SolusやBungieも懸念を表明しており方針を検討中なようだ。

カスタムテーマは多くの開発者からは非推奨

GTKエンジンはGTK3登場以来、仕様変更を何度もくりかえしUIに大きな変更が加えられてきた。さらにディストリビューションによってテーマがHIGに沿って適切に作られてない場合は表示が崩れてしまうこともある。それをアプリのせいにされるなどアプリ開発者にとって頭痛の種であった。アプリ開発者が集まりGNOMEコミュニティに対し公開状を掲載したこともある。

そもそもの話がGNOMEチームは昔からカスタムテーマを推奨したことはなく、意図せず使えるようになってしまったのは第三者によるハックだ。この穴を塞ぐのにいちゃもんをつけるのはおかしいという声も聞こえてくる。実際にGNOME 3でカスタムテーマを使うには「User Theme」という拡張機能をインストールしなければならず、テーマの変更がGNOMEの正式な機能として実装されたことはない。

それにGNOMEばかりがカスタムテーマで表示が崩れることをやり玉に挙げられるが、KDEにも同様の問題が起こる。デークテーマを使用しているときにテキストも黒くなってしまったり、ライトテーマを使用したときにテキストが真っ白で見えなくなってしまったり、スクロールバーが壊れてしまったりということは珍しいことではない。

Libadwaitaはこれらの問題を解決するためにデベロッパーに開発しやすい環境を提供しようという試みなのだが、今度は自由度が下がるとしてディストリビューションやユーザから批判が出るのだからデスクトップ環境の開発はいかに難しいのかが窺い知れる。

テーマ改造は今後も行えるが…

しかしGNOMEにLibadwaitaが採用されたからと言ってカスタムテーマを一切使えなくなるということはく、わずか数行のパッチを当てるだけで libadwaita を無効化できるのでそんなに難しいことではないようだ。

このようにGTK4ではelementryアプリでlibadwaitaウィジェットを使いつつ、elementryスタイルシートを維持できるといった芸当もできるので思ったよりも自由度は高そうだ。

だが将来的に libadwaita に機能が追加されてくうちにカスタムテーマを使ったアプリは壊れていってしまうとの指摘もあり難しい問題だ。カスタムテーマを使う場合はコンスタントなメンテナンスが必要となるだろう。

個人的見解

個人的にはLibadwaitaの導入は歓迎だ。アプリケーション開発者はUIのことを考える手間が減るし一貫したデザインというのは長らくLinuxデスクトップに必要だった。GTK3以降、QTなどへ流出してしまったアプリ開発者が戻ってくることも期待できる。

さらにLibadwaitaはモバイルデバイスでGTKアプリを表示する際の問題も解決してくれる。順当に進化していけばモバイルやタブレットデバイスでiOSやAndroidとも競えるUXになるのではないだろうか。

またPop!_OSが独自のデスクトップを開発するというのも大歓迎。いささか閉塞感が漂ってきたLinux DE界隈に新風を巻き起こしてくれることを期待している。

参考:https://aplazas.pages.gitlab.gnome.org/blog/blog/2021/03/31/introducing-libadwaita.html

おわり

コメント

タイトルとURLをコピーしました