Chromebook Crostini Linuxアプリのペンギンアイコンを修正する

# 経緯

Chromebook で Linux アプリを入れていると、どうしても一部のアプリでアイコンが表示されないものがあり、ずっと気になっていました。正直どうでもいい部分でもありますが、やはりアイコンがすべて一緒だとどこにアプリがあるのか探すのが大変で、それはそれで非効率だと感じました。

せっかく Linux を使っているので、CLI からコマンドで起動できるものならそうしても良いですが、いちいちターミナルを立ち上げてコマンドを打つのも面倒なときがあります。

なかなかこれと言った対処方法がネットでも見つかず思いの外苦戦しましたが、とりあえずの解決方法を見つけることができましたのでシェアしたいと思います。かわいいペンギンになってしまったアプリに個性を与えてあげましょう！

# 概要

この記事では GNOME Terminal を例にアイコンを修正していきます。
結論から書くと、大きく分けて以下の作業をするだけです。

1. 表示したいアプリに対応するアイコン画像の名前を調べる
1. アイコン画像を所定の場所に配置する

# 環境

- Acer Chromebook CB715
- Google Chrome (Chrome OS) Stable 64bit
- Crostini Container (penguin)
    - Linux x86_64
    - Debian GNU/Linux 10 (buster)

# 現状

かわいいですね…でもこれではパッと見なんのアプリか分かりません。
![変更前_ペンギンターミナル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608268/702a5e2e-ec92-ce9f-290d-24fe1bb72035.png)

# 表示したいアプリに対応するアイコン画像の名前を調べる

ChromeOS 側では恐らく以下のディレクトリに保存されているデスクトップファイル（非表示に設定されていないもの）を読み込んでシェルフに表示しています。

- `/usr/share/applications/`
- `~/Desktop/`

試しに見てみます。

```bash
$ ls /usr/share/applications/
audacity.desktop              garcon_host_browser.desktop        org.gnome.ColorProfileViewer.desktop
chromium.desktop              gcm-calibrate.desktop              org.gnome.FontManager.desktop
code-url-handler.desktop      gcm-import.desktop                 org.gnome.FontViewer.desktop
code.desktop                  gcm-picker.desktop                 org.gnome.Nautilus.desktop
debian-uxterm.desktop         gcr-prompter.desktop               org.gnome.Terminal.desktop
debian-xterm.desktop          gcr-viewer.desktop                 org.gnome.gedit.desktop
defaults.list                 gimp.desktop                       org.gnome.tweaks.desktop
display-im6.q16.desktop       gnome-system-monitor-kde.desktop   python2.7.desktop
eog.desktop                   gnome-system-monitor.desktop       python3.7.desktop
fcitx-config-gtk2.desktop     im-config.desktop                  setup-mozc.desktop
fcitx-config-gtk3.desktop     inkscape.desktop                   vim.desktop
fcitx-configtool.desktop      mimeinfo.cache                     vlc.desktop
fcitx-skin-installer.desktop  nautilus-autorun-software.desktop  xdg-desktop-portal-gtk.desktop
fcitx.desktop                 notification-daemon.desktop        yelp.desktop

$ ls ~/Desktop/
arduino-arduinoide.desktop
```

この中から表示したいアプリと思われるものを探し、中身を確認します。

今回は GNOME Terminal のデスクトップファイルを確認したいので、それらしい `org.gnome.Terminal.desktop` の中身を見てみます。なお、`Icon` に対応する値が所定のアイコン名のようです（行数が多いので一部省略しています）。

つまり今回の場合、`utilities-terminal` が GNOME Terminal のアイコン画像の名前になっているはずです。

```bash
$ cat /usr/share/applications/org.gnome.Terminal.desktop
[Desktop Entry]  # 一部省略
Name=Terminal
Name[ja]=端末
Icon=utilities-terminal
```

# アイコン画像を所定の場所に配置する

まず、アイコン画像が既に存在しているか確認します。

`/usr/share/icons/` のディレクトリにアイコン画像が保存されている（[「参考」に記載のリンク](#参考)参照）ので、そこに該当のアイコン画像があるかどうか検索します。

```bash
$ find /usr/share/icons/ -iname '*utilities-terminal*' -print
/usr/share/icons/Adwaita/16x16/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/16x16/apps/utilities-terminal.png
/usr/share/icons/Adwaita/22x22/apps/utilities-terminal.png
/usr/share/icons/Adwaita/24x24/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/24x24/apps/utilities-terminal.png
/usr/share/icons/Adwaita/32x32/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/32x32/apps/utilities-terminal.png
/usr/share/icons/Adwaita/48x48/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/48x48/apps/utilities-terminal.png
/usr/share/icons/Adwaita/512x512/apps/utilities-terminal.png
/usr/share/icons/Adwaita/64x64/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/96x96/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/scalable/apps/utilities-terminal-symbolic.svg
/usr/share/icons/HighContrast/16x16/apps/utilities-terminal.png
/usr/share/icons/HighContrast/22x22/apps/utilities-terminal.png
/usr/share/icons/HighContrast/24x24/apps/utilities-terminal.png
/usr/share/icons/HighContrast/256x256/apps/utilities-terminal.png
/usr/share/icons/HighContrast/32x32/apps/utilities-terminal.png
/usr/share/icons/HighContrast/48x48/apps/utilities-terminal.png
/usr/share/icons/HighContrast/scalable/apps/utilities-terminal.svg
```

アイコン画像の存在を確認することはできましたが、どこに配置すれば良いのかわからないため、正しいアイコン表示のアプリを確認してみます。今回は Audacity と Chromium と GIMP がインストール済みだったので、それらのアイコンがどのように保存されているのかを確認してみます。

`audacity`

```bash
$ find /usr/share/icons/ -iname '*audacity*' -print
/usr/share/icons/hicolor/16x16/apps/audacity.png
/usr/share/icons/hicolor/22x22/apps/audacity.png
/usr/share/icons/hicolor/24x24/apps/audacity.png
/usr/share/icons/hicolor/32x32/apps/audacity.png
/usr/share/icons/hicolor/48x48/apps/audacity.png
/usr/share/icons/hicolor/scalable/apps/audacity.svg
```

`chromium`

```bash
$ find /usr/share/icons/ -iname '*chromium*' -print
/usr/share/icons/hicolor/128x128/apps/chromium.png
/usr/share/icons/hicolor/16x16/apps/chromium.png
/usr/share/icons/hicolor/24x24/apps/chromium.png
/usr/share/icons/hicolor/256x256/apps/chromium.png
/usr/share/icons/hicolor/32x32/apps/chromium.png
/usr/share/icons/hicolor/48x48/apps/chromium.png
/usr/share/icons/hicolor/64x64/apps/chromium.png
```

`gimp`

```bash
$ find /usr/share/icons/ -iname '*gimp*' -print
/usr/share/icons/hicolor/16x16/apps/gimp.png
/usr/share/icons/hicolor/22x22/apps/gimp.png
/usr/share/icons/hicolor/24x24/apps/gimp.png
/usr/share/icons/hicolor/256x256/apps/gimp.png
/usr/share/icons/hicolor/32x32/apps/gimp.png
/usr/share/icons/hicolor/48x48/apps/gimp.png
/usr/share/icons/HighContrast/16x16/apps/gimp.png
/usr/share/icons/HighContrast/22x22/apps/gimp.png
/usr/share/icons/HighContrast/24x24/apps/gimp.png
/usr/share/icons/HighContrast/256x256/apps/gimp.png
/usr/share/icons/HighContrast/32x32/apps/gimp.png
/usr/share/icons/HighContrast/48x48/apps/gimp.png
```

上記で共通しているのは、以下の4つのファイルです。（確実に以下の4つだけでいいのか、4つも必要ないのかまでは検証していません）

- `/usr/share/icons/hicolor/16x16/apps/\*.png`
- `/usr/share/icons/hicolor/24x24/apps/\*.png`
- `/usr/share/icons/hicolor/32x32/apps/\*.png`
- `/usr/share/icons/hicolor/48x48/apps/\*.png`

正しいアイコンがどこに保存されているのかの憶測がたったところで、正しく表示されていないアプリ、今回は GNOME Terminal を確認します。すると、以下を見てもらえると分かる通り、上記では確認できた `/usr/share/icons/hicolor/` にはアイコンとなる画像データが保存されていない事が確認できます。

```bash
$ find /usr/share/icons/ -iname '*utilities-terminal*' -print
/usr/share/icons/Adwaita/16x16/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/16x16/apps/utilities-terminal.png
/usr/share/icons/Adwaita/22x22/apps/utilities-terminal.png
/usr/share/icons/Adwaita/24x24/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/24x24/apps/utilities-terminal.png
/usr/share/icons/Adwaita/32x32/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/32x32/apps/utilities-terminal.png
/usr/share/icons/Adwaita/48x48/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/48x48/apps/utilities-terminal.png
/usr/share/icons/Adwaita/512x512/apps/utilities-terminal.png
/usr/share/icons/Adwaita/64x64/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/96x96/apps/utilities-terminal-symbolic.symbolic.png
/usr/share/icons/Adwaita/scalable/apps/utilities-terminal-symbolic.svg
/usr/share/icons/HighContrast/16x16/apps/utilities-terminal.png
/usr/share/icons/HighContrast/22x22/apps/utilities-terminal.png
/usr/share/icons/HighContrast/24x24/apps/utilities-terminal.png
/usr/share/icons/HighContrast/256x256/apps/utilities-terminal.png
/usr/share/icons/HighContrast/32x32/apps/utilities-terminal.png
/usr/share/icons/HighContrast/48x48/apps/utilities-terminal.png
/usr/share/icons/HighContrast/scalable/apps/utilities-terminal.svg
```

試しに `/usr/share/icons/Adwaita/` から `/usr/share/icons/hicolor/` へ配置（コピペ）して、コンテナを再起動します。

```bash
$ sudo cp /usr/share/icons/Adwaita/16x16/apps/utilities-terminal.png /usr/share/icons/hicolor/16x16/apps/utilities-terminal.png
$ sudo cp /usr/share/icons/Adwaita/24x24/apps/utilities-terminal.png /usr/share/icons/hicolor/24x24/apps/utilities-terminal.png
$ sudo cp /usr/share/icons/Adwaita/32x32/apps/utilities-terminal.png /usr/share/icons/hicolor/32x32/apps/utilities-terminal.png
$ sudo cp /usr/share/icons/Adwaita/48x48/apps/utilities-terminal.png /usr/share/icons/hicolor/48x48/apps/utilities-terminal.png
```

表示されました！
![修正後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608268/4e75442b-9691-58a1-a9d0-ec373db4a750.png)

なお、今回は既にアイコン画像があることが確認できたので、とりあえず既にあるアイコンの画像データ `.png` をコピーして配置しました。

アイコンがない場合は自分で所定のサイズで PNG 形式で作成すれば、それを表示できると思います。[もともと参考にしたページ](#参考)ではデフォルトのアイコンを変更する、という趣旨だったため、好きな画像をアイコンにすることもできるかもしれませんね。

:::note warn
反映されない場合やアイコンがおかしい場合は、再インストールを試してみてください。
:::

# 最後に

分かりそうで分からないことも多かったので補足・修正等も大歓迎です！
最後まで読んでくださってありがとうございます！

# 参考

https://ubuntu.forumming.com/question/4935/how-to-change-the-default-terminal-icon