Ubuntu20.04のgnome-shell-theme.gresource の再構成とlogin画面の変更

2020年4月20日

 Ubuntu20.04からは、gnome-shellのcssはコンパイルされ、gnome-shell-theme.gresourceになりました。
 いくつかのスクリプトでのデコンパイル→改変→コンパイル法はありましたが、階層構造まで移したものがなかったので、うまくいきませんでしたが、今回うまくいきましたので、記録します。
https://mifmif.mydns.jp/masterkudo/?p=473
 から、extract.shを持ってきます。これは、階層構造もデコンパイルしてくれます。
 例として、~/ダウンロード下に展開した場合で説明します。
実行属性をつけておきます。

$ cd ~/ダウンロード
$ chmod +x extract.sh
$ ./extract.sh /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource

 これで、~/ダウンロード/org/gnome/shell/theme以下におなじみのsvgやcssが展開されます。(階層も含んで以下の階層も作られています)
 今度は、コンパイルのためのxmlファイルを作ります。

$ gedit ~/ダウンロード/org/gnome/shell/theme/gnome-shell-theme.gresource.xml

(ほんとはスクリプトでかっこよく決めたいが、lsとls -d(相対パス表示)でしこしこ行きました。)

<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/org/gnome/shell/theme">
    <file>Yaru/gnome-shell-high-contrast.css</file>
    <file>Yaru/gnome-shell.css</file>
    <file>Yaru-dark/gnome-shell-high-contrast.css</file>
    <file>Yaru-dark/gnome-shell.css</file>
    <file>calendar-today.svg</file>
    <file>checkbox-dark.svg</file>
    <file>checkbox-focused-dark.svg</file>
    <file>checkbox-focused.svg</file>
    <file>checkbox-off-dark.svg</file>
    <file>checkbox-off-focused-dark.svg</file>
    <file>checkbox-off-focused.svg</file>
    <file>checkbox-off.svg</file>
    <file>checkbox.svg</file>
    <file>dash-placeholder.svg</file>
    <file>gdm3.css</file>
    <file>icons/scalable/actions/eye-not-looking-symbolic.svg</file>
    <file>icons/scalable/actions/eye-open-negative-filled-symbolic.svg</file>
    <file>icons/scalable/actions/keyboard-caps-lock-filled-symbolic.svg</file>
    <file>icons/scalable/actions/keyboard-enter-symbolic.svg</file>
    <file>icons/scalable/actions/keyboard-hide-symbolic.svg</file>
    <file>icons/scalable/actions/keyboard-layout-filled-symbolic.svg</file>
    <file>icons/scalable/actions/keyboard-shift-filled-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-double-click-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-drag-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-primary-click-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-secondary-click-symbolic.svg</file>
    <file>icons/scalable/status/message-indicator-symbolic.svg</file>
    <file>no-events.svg</file>
    <file>no-notifications.svg</file>
    <file>pad-osd.css</file>
    <file>process-working.svg</file>
    <file>toggle-off-dark.svg</file>
    <file>toggle-off-hc.svg</file>
    <file>toggle-off.svg</file>
    <file>toggle-on-dark.svg</file>
    <file>toggle-on-hc.svg</file>
    <file>toggle-on.svg</file>
  </gresource>
</gresources>

20.04-1-gnome-shell-theme.gresource.zipとして置いておきます。
 カレントディレクトリを、合わせ、コンパイルします。

$ cd ~/ダウンロード/org/gnome/shell/theme
$ glib-compile-resources gnome-shell-theme.gresource.xml

 こうしてできた、gnome-shell-theme.gresourceを、元のところに入れてテストしました。

$ sudo cp gnome-shell-theme.gresource /usr/share/gnome-shell/theme/Yaru/

(うまくいかなかった場合のために、/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresourceは.bakでも名前につけて、バックアップを取りましょう)
ログアウト・・・ログイン画面がちゃんと出ました。成功!

こんどは、login画面を変えられるか・・・
そこで、gdm3.cssを改変。

2095 #lockDialogGroup {
2096 background-color: #4f194c; }

を変更・・・

2095 #lockDialogGroup {
2096 background: #FEA5FA url(file:///usr/share/backgrounds/login.png);
2097 background-repeat: no-repeat;
2098 background-size: cover;
2099 background-position: center; }

というように、/usr/share/backgrounds/login.pngを指定します。そして/usr/share/backgrounds/login.pngを用意しておきます。
同じように、

$ glib-compile-resources gnome-shell-theme.gresource.xml
$ sudo cp gnome-shell-theme.gresource /usr/share/gnome-shell/theme/Yaru/

うまくいきました。

 コンパイル済みのgnome-shell-theme.gresourceを以下に置いておきます。
20.04.chg.login.gnome-shell-theme.zip

 基本的にうまくいく方法はわかりましたが、白を基調にしているので、明るい画面では、見にくいようです。各cssを変更して、色を変えるといいと思いました。

 追記:

$ls | sed 's#^# <file>#g' | sed 's#$#</file>#g' > gtk.gresource.xml
あとlsに-dオプションで相対パス表示になるのでちょうどいいです。

という手がありましたね。

 

PC

Posted by masterkudo