The Computer Oracle

Command line SVG and image file viewer in Linux?

--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Game 5

--

Chapters
00:00 Command Line Svg And Image File Viewer In Linux?
00:34 Accepted Answer Score 52
00:44 Answer 2 Score 12
00:55 Answer 3 Score 6
01:19 Answer 4 Score 16
04:42 Thank you

--

Full question
https://superuser.com/questions/174522/c...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#linux #commandline #imageviewer

#avk47



ACCEPTED ANSWER

Score 52


Have you tried the display program that comes with ImageMagick?




ANSWER 2

Score 16


I usually work with SVG as text files, so would like the viewer to automatically refresh the display as soon as the file got saved (and its contents got changed) - this should be applicable to 'pipable' situations, I think (i.e. with named pipes).

Note that, for default Gnome apps:

  • evince currently works like this for PDFs, but seemingly it cannot read SVG (for me it generates "Unable to open document - Error opening file: Permission denied" when I tried to load SVG files)
  • eog (Eye Of Gnome) - the latest versions - can also detect if a file changed on this, and then offer a 'Reload' button; but apparently, you'd still have to click on 'Reload' each time (I cannot see a way to cause automatic reload always on file change in eog, like evince behaves with PDFs) - and also, at least on my Ubuntu 10.04, eog SVG support is somewhat broken (zoom in results with blurry lines)
  • ImageMagick's display not only does not automatically refresh when the file changes on disk - and even when you press 'refresh' in display, you still do not get the latest version of the file (meaning, you have to restart display to show the latest version :( ).

Here are some more notes I found so far:

  • Squiggle, the SVG Browser The SVG browser that is part of the Batik toolkit. - Download Batik batik-1.7.zip; unpack it; run java -jar batik-squiggle.jar and there it is; does not refresh the image automatically if the svg file changed on disk
  • SVG Image Viewer? - Ubuntu Forums recommendations:
    • In post #8 - "I wrote a little python script ... You just run it as: svg_compare.py and it opens up an svg and displays it using an svg library and using gtk's raster library. You can zoom with the mouse..."
    • xsvg (from http://cairographics.org) - I installed libsvg1_0.1.4-1_i386.deb, libsvg-cairo1_0.1.6-5_i386.deb and xsvg_0.2.1-3_i386.deb in that order; those versions are from 2005, and so xsvg is extremely simple - no zoom, nothing.. And needless to say, it does not react to saved file changes automatically...
  • through that, I found rsvg-view, which I think is a part of sudo apt-get install librsvg2-bin. Its small, nice, supports stdin - however, also rsvg-view cannot detect a file change, and automatically refresh on it..

Yup - well, I hope this helps...
Cheers!

 

EDIT (Dec 24 '10): well, here is also my contribution: svg_refreshview.py - which is basically a rework of svg_compare.py mentioned above, that simply shows an SVG file, and reloads the file and refreshes the display if the file has been modified. (it can't really work with stdin - but there are other scripts in my repo that parse stdin in python, maybe they'll help).

EDIT2 (May 20 '12): Also, came up with a Perl-Tk script example, which is very crude (no mouse interaction, no nothing), but uses ImageMagick Perl API, and so can render SVG (as bitmap on a canvas), please see answer #10670039 - ImageMagick API for command-line GUI application interface to display - Stack Overflow.




ANSWER 3

Score 12


What do you mean with 'pipe-able'?
feh is very good commandline viewer with tons of options.




ANSWER 4

Score 6


I second Dennis Williamson's recommendation of ImageMagick display.

Also, you can sometimes use named pipes to pipe data to programs which read from a file.

Example:

mkfifo /tmp/foo.svg
cat /usr/share/inkscape/clipart/tux.svg > /tmp/foo.svg & inkscape /tmp/foo.svg
rm -f /tmp/foo.svg

Won't work with programs which expect to be able to seek backward in the file, though.