UBUNTU20.04のgtk-3.0テーマを16.04でハート化してみる

 リクエストがありましたので、やってみました。

1.16.04で20.04のYaru-heart2を使っても、一部のアプリ以外gtk-3.0のcssは効かずに、タイトルボタンはYaruのボタンに変わりませんでした。ほとんどが16.04のデフォルトのままです。
2.該当する一部のアプリ(sudo geditを確認しました)のハート化のため。gtk-3.0のcssのtitlebuttonの描画部分(5200-5314行)をコメントアウトしました。20.04のYaru-heartのmoe.cssの描画部分はそのままでは描画できなかったため、Moe-Pink13のwidgetのcssから、描画部分をもってきてmoe3.0.cssとしたところ、ハートの描画ができました。(ただ、このmoe3.0.cssが20.04で正しいかまではわかりませんが、目的的には一応の完成です。)

3.なぜほとんどのタイトルボタンが、Yaruのタイトルボタンにならないのかを検証。Moe-Pink13のgtk-3.0フォルダを、20.04のYaru-heart2のgtk-3.0フォルダにしたところ、すべてのウインドウはピンクになるが、タイトルボタンはデフォルトのままです(先ほどと同じくsudo geditだけハートボタンです)。

そこで、20.04に無いopenbox-3 unity xfvm4フォルダを入れたところ、タイトルボタンがすべてハートになりました。

 結論としては、20.04のgtk-3.0はデスクトップが新しいGnomeになったので、16.04では、(一部解釈されないのだと思います)すべてのウインドウのタイトルボタンを変えることはできませんでした。確認できたgeditのタイトルボタンは20.04のYaruにかわりましたので、描画部分をコメントアウトし、moe.3.0.cssを使って、ハート化させることができました。
 16.04でハート化するためには、20.04のgtk-3.0のcssだけでは無理でした。さらに、ハート化させられるMoe-pink13から、gtk-3.0のcssを持ってきて置き換えましたが、ハート化されませんでした(Wigetのcssに描画のcss指定はありますができません)。16.04ではさらに、Moe-Pink13のopenbox-3 unity xfvm4フォルダがハート化に必要なので、20.04とは違う方法でハート化が行われていることが判りました。
 そもそも20.04に入っていない、openbox-3 unity xfvm4フォルダを20.04のYaruに付け足すのは意味がないと思います。(これらで動くことはあり得ないので、そもそもこれらのフォルダが無いものと思います。)そのため、いまのところ、gtk-3.0のハート化できるのは、上の方法のみです。(moe3.0.cssが20.04で正しいと仮定してですが)
 上の一応の成功をした時点の、20.04用Yaru-heart2テーマを20.04で動かしたところ、不具合はない模様です。

 16.04はUnityであること、古いことがあって、今のgtk-3.0の解釈ができないようで、本来的に無理があるようです。これ以上の直しは、残念ですが、意味がないものと思います。
 とりあえずの成功のファイルを、以下に置いておきます。
Yaru-heart2modgtk3.0.zip

 追記1:テーマはデスクトップ=Gnomeのバージョンが決まってから作る形になるので、その場合、cssの言語がアップデートされてしまうので、通常過去のデスクトップバーションに現バージョンcssが適応することには無理があると思います。その逆、つまり現バージョンが次のバージョンに適応可能なのは、デスクトップバージョンが上がっても、以前のcssの描き方でも新しいデスクトップのバージョンは互換性をある程度担保しているからです(通常改良になりますし、過去のデータが使えないと移行しずらいためです)。

 追記2:20.04のYaruの場合、万が一のレガシーアプリ(例えば旧バージョンのgeditを、必要な何かのために使った場合など)のためにgtk-3.0が残ってるのじゃないかと思います。そのため、一応上記のようには変更しておきながら、後のところは、あまり気にしなくてもいいのかもしれません。

PC

Posted by masterkudo