I stumbled on the Papirus icon theme (GPL licenced). One can download the package with thousands of svg-files. Opening every file in Inksacpe or Firefox is not a practical approach to get an overview over all icons. I would like to see 50 icons at once, along with their filename. Is there a free software for that purpose or a {bash, python, ...}-snippet which renders N svg files side by side on a png?

  • 1
    This kind of collection of thumbnail images is often referred to as a ‘contact sheet’. There are various free online resources for creating contact sheets - I’m sure you’ll find one that accepts SVGs as input. – Westside Mar 24 '18 at 17:16
  • 4
    I run a local host.... it's a simple PHP script loop to show all images in a directory. Could be done fairy easily via MAMP or LAMP if you have that running. – Scott Mar 24 '18 at 17:29
  • Look what ImageMagick can do for you. – Jongware Mar 24 '18 at 18:19
  • 1
    A reasonably capable file manager might do this already. What platform are you on? – Michael Schumacher Mar 26 '18 at 8:50
  • I am on Debian GNU Linunx with KDE. I meanwhile solved the problem with a python script which generates a html-file including the pictures. I plan to clean that up and share it here and on github. – cknoll Mar 26 '18 at 16:56

Inspired by the comment of Scott, I decided to write my own solution: A python script which generates a static html file including all images, see https://github.com/cknoll/imagedirpreview.

Even with >3000 svg-symbols it is considerably fast, see video:

Video (hosted at VIMEO)

  • Very similar to what I have PHP doing. I just went without any templates since mine is really for in house only. I've tried a ton of image "catalogers" and they all were nowhere near as fast. And the great thing.. just point to a different directory if you want to preview other image sets. – Scott Mar 30 '18 at 1:40
  • I solved my original problem rather quick as well. But then I thought, it would be nice to make that solution publicly available to let others solve that problem within one minute. – cknoll Mar 30 '18 at 16:32
  • I downloaded it from github but don't have pip installed, nor do the ubuntu reps (16.04) offer pip. But I have a lot of python stuff installed. Can I build/install it without pip? – user unknown Apr 15 '18 at 10:52
  • 1
    @userunknown installation without pip should be possible. Only requirement which is not in the standard library is jinja2 (templating system). However I would strongly recommend using pip, and I would be really surprised if this was not available in ubuntu 16.04. I use debian an the package name is python3-pip. Also see: <saltycrane.com/blog/2010/02/how-install-pip-ubuntu>. Nevertheless, feel free to open an issue on github. – cknoll Apr 16 '18 at 12:07
  • Aha, so apt search jinja2 shows, beneath python2 and others, python3-jinja2. I would take that, right? And yes, with python(3)-pip I find pip too, thanks. – user unknown Apr 16 '18 at 13:14

An icon manager application would work for this purpose too. I guess these applications could also be called icon libraries. I don't Know if there are similar apps for Linux or Windows but there are a few for Mac.

They function about the same as to font managers.

I personally use iconjar on mac. I use it to store other graphics too.

enter image description here


Here is a bash script.

# Put many SVG-graphics on a HTML-page for preview
#   - depends on some command to get the screen resolution, here xdpyinfo
#   - usage: svg-overview.sh [N]
#     N: Number of pictures to put in row. Default is 6
#   - generates a html-file svg-preview.html where the images are 
#     referenced, so loading big svg files will put some load the CPU
# xdpyinfo is available on linux, probably not on MacOS etc. so you might need
# some other method to evaluate width and height.
dim=$(xdpyinfo | grep dimension | spalten 3)
# dim=1600x1200
h=${dim/*x/}  # This comment only fools the code layouter */
echo "Width of screen: $w height: $h per Row: $perRow x=$x y=$y"

head () {
  echo '<html><head><title>'
  echo '</title></head><body><table>'


content () {
  for file in *.svg ; do
    if ((count%perRow == 0)) ; then
      echo "<tr><td><a href='$file'><img src='"$file"' alt='$file' width='"$x"' heigth='"$y"'/></a></td>"
      if ((count%perRow != perRow-1)) ; then
        echo "<td><a href='$file'><img src='"$file"' alt='$file' width='"$x"' heigth='"$y"'/></a></td>"
        echo "<td><a href='$file'><img src='"$file"' alt='$file' width='"$x"' heigth='"$y"'/></a></td></tr>"

tail () {
  # trailing </tr>, if the number of pictures didn't fill the row
  if (( count%perRow != 0 )) ; then
    echo "</tr>" >>$PFILE

  echo "</table></body></html>"

head > $PFILE
content >> $PFILE
tail >> $PFILE

The preview file is overwritten without notice.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.