C Makefile
Fetching latest commit…
Cannot retrieve the latest commit at this time.


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, FreeImage, and asciidoc.

$ 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


imv is published under the MIT license, but due to the use of a GPLv2 library imv is also published under the terms of the GPLv2 license.