Nah, beberapa DEs menunjukkan ini ketika Anda mencoba mengubah ikon sesuatu, tetapi cukup mudah untuk melakukannya sendiri. Cukup temukan semua ikon, buat tautan ke sana di beberapa direktori dan ramban direktori. Ikon-ikon dari resolusi yang berbeda akan memiliki nama yang sama, yang berubah adalah path. Sebagai contoh:
$ find /usr/share/icons/ -name '*emacs.*'
/usr/share/icons/hicolor/16x16/apps/emacs.png
/usr/share/icons/hicolor/48x48/apps/emacs.png
/usr/share/icons/hicolor/scalable/apps/emacs.svg
/usr/share/icons/hicolor/128x128/apps/emacs.png
/usr/share/icons/hicolor/32x32/apps/emacs.png
/usr/share/icons/hicolor/24x24/apps/emacs.png
/usr/share/icons/Mint-X/apps/96/emacs.svg
/usr/share/icons/Mint-X/apps/16/emacs.png
/usr/share/icons/Mint-X/apps/24/emacs.png
/usr/share/icons/Mint-X/apps/48/emacs.png
/usr/share/icons/Mint-X/apps/32/emacs.png
/usr/share/icons/Mint-X/apps/22/emacs.png
Seperti yang Anda lihat di atas, format umumnya adalah /ParentDir/ThemeName/CLass/Resolution/IconName
. Jadi, karena nama ikonnya sama, kita dapat menghindari duplikat dengan mudah dengan membuat setiap tautan dibuat menimpa tautan yang ada dengan nama yang sama. Namun, kami ingin memisahkan ikon-ikon dari berbagai tema yang berbeda, sehingga memerlukan sedikit lebih banyak skrip:
#!/usr/bin/env bash
## Create the target directory
mkdir -p ~/foo
## Iterate over all files/dirs in the target locations
for i in ~/.icons/* /usr/share/icons/* /usr/share/pixmaps/*; do
## find all icon files in this directory. If the current $i
## is not a directory, find will just print its path directly.
find "$i" -name '*xpm' -o -name '*.svg' -o -name '*png' |
## Iterate over find's results
while read ico; do
## Make the link. ${var##*/} will print the
## basename of $var, without the path. Here, I use
## it both to get the theme name (${i##*/}) and the
## icon's name (${ico##*/}).
ln -sf "$ico" "${i##*/}"_"${ico##*/}"
done
done
Script di atas akan membuat direktori ~/foo
yang akan berisi tautan ke masing-masing file ikon unik Anda. The -f
pilihan untuk ln
mengatakan itu untuk menimpa file yang sudah ada dengan nama yang sama dan, karena kita sedang menggunakan nama tema dalam nama link ini, seharusnya tidak ada duplikat. Misalnya, mengingat emacs.png
ikon yang ditunjukkan di atas, itu akan membuat:
hicolor_emacs.png -> /usr/share/icons/hicolor/48x48/apps/emacs.png
Mint-X_emacs.png -> /usr/share/icons/Mint-X/apps/22/emacs.png
Anda sekarang dapat, telusuri ~/foo
dan lihat:
Kemudian, untuk mendapatkan paket sumber, Anda bisa menjalankan:
for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done