Bene, alcuni DE lo mostrano quando provi a cambiare l'icona di qualcosa, ma è abbastanza facile farlo da soli. Basta trovare tutte le icone, creare collegamenti in alcune directory e sfogliare la directory. Le icone di diverse risoluzioni avranno lo stesso nome, ciò che cambia è il percorso. Per esempio:
$ 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
Come puoi vedere sopra, il formato generale è /ParentDir/ThemeName/CLass/Resolution/IconName
. Quindi, poiché il nome dell'icona è lo stesso, possiamo evitare facilmente i duplicati facendo sì che ogni collegamento creato sovrascriva qualsiasi collegamento esistente con lo stesso nome. Tuttavia, vogliamo separare le icone dai diversi temi, quindi è necessario un po 'più di scripting:
#!/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
Lo script sopra creerà la directory ~/foo
che conterrà collegamenti a ciascuno dei tuoi file icona unici. L' -f
opzione per ln
dirgli di sovrascrivere i file esistenti con lo stesso nome e, poiché stiamo usando il nome del tema nel nome del collegamento, non dovrebbero esserci duplicati. Ad esempio, date le emacs.png
icone mostrate sopra, creerà:
hicolor_emacs.png -> /usr/share/icons/hicolor/48x48/apps/emacs.png
Mint-X_emacs.png -> /usr/share/icons/Mint-X/apps/22/emacs.png
Ora puoi, navigare ~/foo
e dare un'occhiata:
Quindi, per ottenere i pacchetti di origine, è possibile eseguire:
for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done