Well, some DEs show this when you try to change the icon of something, but it is quite easy to do it yourself. Just find all icons, make links to them in some directory and browse the directory. The icons of different resolutions will have the same name, what changes is the path. For example:
$ 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
As you can see above, the general format is /ParentDir/ThemeName/CLass/Resolution/IconName
. So, since the icon's name is the same, we can avoid duplicates easily by having each link created overwrite any existing links of the same name. However, we do want to jeep the icons from the different themes separate, so that requires a little bit more 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
The script above will create the directory ~/foo
which will contain links to each of your unique icon files. The -f
option to ln
tells it to overwrite existing files with the same name and, since we're using the theme name in the link's name, there should be no duplicates. For example, given the emacs.png
icons shown above, it will create:
hicolor_emacs.png -> /usr/share/icons/hicolor/48x48/apps/emacs.png
Mint-X_emacs.png -> /usr/share/icons/Mint-X/apps/22/emacs.png
You can now, browse to ~/foo
and have a look:

Then, to get the source packages, you could run:
for i in ~/foo/*; do dpkg -S $(readlink -f "$i"); done
find /usr/share/icons/ -iname '*.png' -or -iname '*.svg' -printf '%h %f %p\n' | sed -r 's;^/usr/share/icons/([^/]*)/[^ ]* ;\1 ;' | sort -u -k1,2 | column -t
covers most of it (except the thumbnail part), I'd say. I'm not sure how you expect to see the thumbnail in a list. – muru Nov 09 '15 at 12:05showicon () ( notify-send $1 -i $1 )
--> Example:showicon terminal
– Byte Commander Nov 09 '15 at 12:41