Bueno, algunos DE muestran esto cuando intentas cambiar el ícono de algo, pero es bastante fácil hacerlo tú mismo. Simplemente encuentre todos los iconos, haga enlaces a ellos en algún directorio y explore el directorio. Los iconos de diferentes resoluciones tendrán el mismo nombre, lo que cambia es la ruta. Por ejemplo:
$ 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
Como puede ver arriba, el formato general es /ParentDir/ThemeName/CLass/Resolution/IconName
. Por lo tanto, dado que el nombre del icono es el mismo, podemos evitar duplicados fácilmente haciendo que cada enlace creado sobrescriba los enlaces existentes del mismo nombre. Sin embargo, sí queremos separar los íconos de los diferentes temas, por lo que eso requiere un poco más de secuencias de comandos:
#!/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
El script anterior creará el directorio ~/foo
que contendrá enlaces a cada uno de sus archivos de iconos únicos. La -f
opción ln
le dice que sobrescriba los archivos existentes con el mismo nombre y, dado que estamos usando el nombre del tema en el nombre del enlace, no debería haber duplicados. Por ejemplo, dados los emacs.png
iconos que se muestran arriba, creará:
hicolor_emacs.png -> /usr/share/icons/hicolor/48x48/apps/emacs.png
Mint-X_emacs.png -> /usr/share/icons/Mint-X/apps/22/emacs.png
Ahora puedes navegar ~/foo
y echar un vistazo:
Luego, para obtener los paquetes fuente, puede ejecutar:
for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done