C Makefile
Latest commit c51dff6 Aug 23, 2017 @eXeC64 eXeC64 Workaround bug where events are received incorrectly
For some reason SDL passes events to us that occurred before we
gained focus, and passes them *after* the focus gained event.
Due to behavioural quirks from such events, whenever we gain focus
we have to clear the event queue. It's hacky, but works without
any visible side effects.


Build Status imv - X11/Wayland Image Viewer

imv is a command line image viewer intended for use with tiling window managers.


  • Wayland Support
  • Support for over 30 different image file formats including:
    • Photoshop PSD files
    • Animated GIFS
    • Various RAW formats


Opening images

imv image1.png another_image.jpeg yet_another.TIFF

Opening images via stdin

find . "*.png" | imv

Open an image fullscreen

imv -f image.jpeg

Viewing images in a random order

find . "*.png" | shuf | imv

Viewing images from stdin

curl http://somesi.te/img.png | imv -

Image picker

imv can be used to select images in a pipeline by using the p hotkey to print the current image's path to stdout. The -l flag can also be used to tell imv to list the remaining paths on exit for a "open set of images, close unwanted ones with x, then quit imv to pass the remaining images through" workflow.

Picking a wallpaper

custom-set-wallpaper-script "$(find ./wallpaper -type f -name '*.jpg' | imv | tail -n1)"

Deleting unwanted images

find -type f -name '*.jpg' | imv | xargs rm -v

Choosing pictures to email

find ./holiday_pics -type f -name '*.jpg' | imv | xargs cp -t ~/outbox

Viewing images from the web

curl -Osw '%{filename_effective}\n' 'http://www.example.com/[1-10].jpg' | imv


imv can be used to display slideshows. You can set the number of seconds to show each image for with the -t option at start up, or you can configure it at runtime using the t and T hotkeys to increase and decrease the image display time, respectively.

To cycle through a folder of pictures, showing each one for 10 seconds:

imv -t 10 ~/Pictures/London

The -x switch can be used to exit imv after the last picture instead of cycling through the list.


imv depends on pthreads, FontConfig, SDL2, SDL_TTF, and FreeImage.

$ make
# make install

Macro PREFIX controls installation prefix. If more control over installation paths is required, macros BINPREFIX, MANPREFIX and DATAPREFIX are available. Eg. to install imv to home directory, run:

$ BINPREFIX=~/bin PREFIX=~/.local make install

In case something goes wrong during installation process you may use verbose mode to inspect commands issued by make:

$ V=1 make


imv has a work-in-progress test suite. The test suite requires cmocka.

$ make check


There's an official irc channel for imv discussion and development on Freenode: #imv.


imv is published under the GPLv2 license.