gnome の デスクトップテーマ を選択する・壁紙をカスタマイズする・デフォルトテーマに反映する


gnome のデスクトップテーマは、desktop-base を指していて、は、Linux 上での gnome の壁紙やログイン画面、起動画面のシステム設定をまとめて設定するもの。
実体は ` /usr/share/desktop-base` にあります。 

:::note
 
GTK アプリケーションや GNOME Shell のテーマとは別で、それらは `/usr/share/themes` に収められています。
また、アイコンのテーマは `/usr/share/icons/` に収められています。
:::



調べた過程で試行錯誤した記録は
「gnome のデフォルトデスクトップ壁紙を変更する」https://qiita.com/nanbuwks/items/2ee5b1dab1955d2d7535

 に書いたけれどもわかりずらい記事だったので、設定方法だけ抜き出しました。


 # デスクトップテーマの場所



 /usr/share/desktop-base にあり、
```
$ ls  /usr/share/desktop-base/
active-theme              grub_background.sh  profiles
debian-homepage.desktop   homeworld-theme     retro-theme
debian-logos              joy-inksplat-theme  softwaves-theme
debian-reference.desktop  joy-theme           spacefun-theme
debian-security.desktop   kf5-settings        splash01.svg
emerald-theme             lines-theme
futureprototype-theme     moonlight-theme
```

このうちデフォルト設定は以下で指定されています。
```
$ ls -alh /etc/alternatives/desktop-theme
lrwxrwxrwx 1 root root 37  6月 30 14:32 /etc/alternatives/desktop-theme -> /usr/share/desktop-base/emerald-theme
```

# デスクトップテーマを選択する

```
# rm /etc/alternatives/desktop-theme
# ln -s /usr/share/desktop-base/joy-theme /etc/alternatives/desktop-theme
```

# デスクトップテーマを作る

適当なデスクトップテーマからコピーします。例として emerald-theme をコピーします。


```
# cd /usr/share/desktop-base
# cp -a emerald-theme test-theme
# cd test-theme
```

```
# ls -alh
合計 24K
drwxr-xr-x  6 root root 4.0K  6月 30 14:32 .
drwxr-xr-x 15 root root 4.0K  7月  7 17:49 ..
drwxr-xr-x  2 root root 4.0K  6月 30 14:48 grub
drwxr-xr-x  3 root root 4.0K  6月 30 14:48 lockscreen
drwxr-xr-x  2 root root 4.0K  6月 30 14:48 login
lrwxrwxrwx  1 root root   29  7月 12  2023 plymouth -> ../../plymouth/themes/emerald
drwxr-xr-x  3 root root 4.0K  6月 30 14:48 wallpaper
```

このうち、 plymouth と grub  は別に指定するのが簡単なので、削除します。

```
# rm plymouth
# rm -rf grub
# ls -alh
total 20K
drwxr-xr-x  5 root root 4.0K Jul 10 00:04 .
drwxr-xr-x 16 root root 4.0K Jul  9 23:57 ..
drwxr-xr-x  3 root root 4.0K Jun 30 14:48 lockscreen
drwxr-xr-x  2 root root 4.0K Jun 30 14:48 login
drwxr-xr-x  3 root root 4.0K Jun 30 14:48 wallpaper
```
## 壁紙をカスタマイズする

`wallpaper/gnome-background.xml` を編集します。

元々はこのようになってますが、

```
<background>
  <static>
    <duration>8640000.0</duration>
    <file>
      <size width="1280" height="800">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/1280x800.svg</size>
      <size width="1280" height="1024">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/1280x1024.svg</size>
      <size width="1600" height="1200">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/1600x1200.svg</size>
      <size width="1920" height="1080">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/1920x1080.svg</size>
      <size width="1920" height="1200">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/1920x1200.svg</size>
      <size width="2560" height="1440">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/2560x1440.svg</size>
      <size width="2560" height="1600">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/2560x1600.svg</size>
      <size width="3200" height="1800">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/3200x1800.svg</size>
      <size width="3200" height="2000">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/3200x2000.svg</size>
      <size width="3840" height="2160">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/3840x2160.svg</size>
      <size width="5120" height="2880">/usr/share/desktop-base/emerald-theme/wallpaper/contents/images/5120x2880.svg</size>
    </file>
  </static>
</background>



```
解像度をたくさん用意するのはメンドクサイので、調べたら以下の代表2つぐらいに簡略化しても大丈夫ぽいです。

```
<background>
  <static>
    <duration>8640000.0</duration>
    <file>
      <size width="1280" height="1024">/usr/share/desktop-base/test-theme/wallpaper/contents/images/1280x1024.svg</size>
      <size width="1920" height="1080">/usr/share/desktop-base/test-theme/wallpaper/contents/images/1920x1080.svg</size>
    </file>
  </static>
</background>
```

xml にあわせて画像を作成し、 contents/images/ に保存します。

## login, lockscreen

この2つのディレクトリも同様に書き換えます。

# 変更反映
```
# rm /etc/alternatives/desktop-theme
# ln -s /usr/share/desktop-base/test-theme /etc/alternatives/desktop-theme
```