2019-02-15 23:29:24 +01:00
|
|
|
[![builds.sr.ht status](https://builds.sr.ht/~exec64/imv.svg)](https://builds.sr.ht/~exec64/imv?)
|
2015-11-10 17:51:16 +01:00
|
|
|
imv - X11/Wayland Image Viewer
|
|
|
|
==============================
|
2015-11-05 20:57:24 +01:00
|
|
|
|
2015-11-06 19:01:05 +01:00
|
|
|
`imv` is a command line image viewer intended for use with tiling window managers.
|
2015-11-05 20:57:24 +01:00
|
|
|
|
2015-11-06 19:01:05 +01:00
|
|
|
Features
|
|
|
|
--------
|
|
|
|
|
2015-11-10 17:51:16 +01:00
|
|
|
* Wayland Support
|
|
|
|
* Support for over 30 different image file formats including:
|
|
|
|
* Photoshop PSD files
|
|
|
|
* Animated GIFS
|
|
|
|
* Various RAW formats
|
2019-01-21 23:49:11 +01:00
|
|
|
* SVG
|
2018-05-08 21:22:29 +02:00
|
|
|
* Configurable key bindings and behaviour
|
2015-11-05 23:31:38 +01:00
|
|
|
|
2018-05-08 21:22:29 +02:00
|
|
|
Example Usage
|
|
|
|
-------------
|
|
|
|
|
|
|
|
The following examples are a quick illustration of how you can use imv.
|
|
|
|
For full documentation see the man page.
|
2015-11-06 19:01:05 +01:00
|
|
|
|
|
|
|
### Opening images
|
2018-05-08 21:22:29 +02:00
|
|
|
imv image1.png another_image.jpeg a_directory
|
|
|
|
|
|
|
|
### Opening a directory recursively
|
|
|
|
imv -r Photos
|
2015-11-06 19:01:05 +01:00
|
|
|
|
|
|
|
### Opening images via stdin
|
2016-01-13 02:15:12 +01:00
|
|
|
find . "*.png" | imv
|
2015-11-09 15:56:46 +01:00
|
|
|
|
2015-12-26 04:09:42 +01:00
|
|
|
### Open an image fullscreen
|
|
|
|
imv -f image.jpeg
|
2015-11-06 19:01:05 +01:00
|
|
|
|
2015-11-12 19:49:11 +01:00
|
|
|
### Viewing images in a random order
|
2016-01-13 02:15:12 +01:00
|
|
|
find . "*.png" | shuf | imv
|
|
|
|
|
|
|
|
### Viewing images from stdin
|
|
|
|
curl http://somesi.te/img.png | imv -
|
2015-11-06 19:01:05 +01:00
|
|
|
|
2018-05-08 21:22:29 +02:00
|
|
|
### Advanced use
|
2015-12-11 16:38:26 +01:00
|
|
|
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.
|
2015-11-12 19:49:11 +01:00
|
|
|
|
2018-05-08 21:22:29 +02:00
|
|
|
Through custom bindings, imv can be configured to perform almost any action
|
|
|
|
you like.
|
2015-11-12 19:49:11 +01:00
|
|
|
|
|
|
|
#### Deleting unwanted images
|
2018-05-08 21:22:29 +02:00
|
|
|
In your imv config:
|
|
|
|
|
|
|
|
[binds]
|
2019-01-23 00:20:51 +01:00
|
|
|
<Shift+x> = exec rm "$imv_current_file"; close
|
2018-05-08 21:22:29 +02:00
|
|
|
|
2018-09-01 03:33:22 +02:00
|
|
|
Then press 'X' within imv to delete the image and close it.
|
2018-05-08 21:22:29 +02:00
|
|
|
|
|
|
|
#### Rotate an image
|
|
|
|
In your imv config:
|
|
|
|
|
|
|
|
[binds]
|
2018-09-01 03:33:22 +02:00
|
|
|
<Shift+r> = exec mogrify -rotate 90 "$imv_current_file"
|
2018-05-08 21:22:29 +02:00
|
|
|
|
|
|
|
Then press 'R' within imv to rotate the image 90 degrees using imagemagick.
|
|
|
|
|
|
|
|
#### Tag images from imv using dmenu as a prompt
|
|
|
|
In your imv config:
|
|
|
|
|
|
|
|
[binds]
|
|
|
|
u = exec echo $imv_current_file >> ~/tags/$(ls ~/tags | dmenu -p "tag")
|
2015-11-12 19:49:11 +01:00
|
|
|
|
2018-05-08 21:22:29 +02:00
|
|
|
Then press 'u' within imv to tag the current image.
|
2015-11-12 19:49:11 +01:00
|
|
|
|
2016-03-06 03:45:21 +01:00
|
|
|
#### Viewing images from the web
|
2016-03-06 03:49:47 +01:00
|
|
|
curl -Osw '%{filename_effective}\n' 'http://www.example.com/[1-10].jpg' | imv
|
2016-03-06 03:45:21 +01:00
|
|
|
|
2015-12-11 16:38:26 +01:00
|
|
|
### Slideshow
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2016-04-01 17:02:03 +02:00
|
|
|
The `-x` switch can be used to exit imv after the last picture instead of
|
|
|
|
cycling through the list.
|
|
|
|
|
2015-11-10 17:53:38 +01:00
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2019-01-21 23:49:11 +01:00
|
|
|
`imv` depends on `pthreads`, `FontConfig`, `SDL2`, `SDL_TTF` and `asciidoc`.
|
|
|
|
Additional dependencies are determined by which backends are selected when
|
|
|
|
building `imv`. You can find a summary of which backends are available and
|
|
|
|
control which ones `imv` is built with in [config.mk](config.mk)
|
2019-01-14 20:51:29 +01:00
|
|
|
|
2019-01-21 23:49:11 +01:00
|
|
|
$ $EDITOR config.mk
|
2015-11-12 19:49:11 +01:00
|
|
|
$ make
|
|
|
|
# make install
|
2015-11-10 17:53:38 +01:00
|
|
|
|
2015-12-25 15:29:12 +01:00
|
|
|
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
|
|
|
|
|
2015-12-25 17:52:01 +01:00
|
|
|
In case something goes wrong during installation process you may use verbose
|
|
|
|
mode to inspect commands issued by make:
|
|
|
|
|
|
|
|
$ V=1 make
|
|
|
|
|
2015-12-08 17:36:26 +01:00
|
|
|
Tests
|
|
|
|
-----
|
|
|
|
|
|
|
|
`imv` has a work-in-progress test suite. The test suite requires `cmocka`.
|
|
|
|
|
|
|
|
$ make check
|
|
|
|
|
2015-11-06 19:01:05 +01:00
|
|
|
License
|
|
|
|
-------
|
2019-06-13 01:02:50 +02:00
|
|
|
`imv`'s source is published under the [MIT](LICENSE) license.
|