qiv - a fast gdk/imlib image viewer for X.

Version: 2.3.3, released on 2023-01-28
by Andy Spiegl - - qiv.andy [AT]
originally by Adam Kopacz / KLOGRAFX.DE Network - adam.k [AT]


qiv [options] file ...


qiv is an image viewer developed with gdk/imlib. As a result, qiv is faster than traditional image viewers such as xv or xli.


-h, --help

Print out a brief help message.

--display disp

Open qiv window on display disp.

-F, --file file | stdin

Read file names from file or stdin, one name per line. This option can be specified multiple times to read from several files, and will not affect other file names passed on the command line.

-u, --recursivedir

Change the behavior of qiv to recursively descend into the directories given on the command line.

-L, --followlinks

With --recursivedir, this allows a symlink to point to a directory. This is useful for organizing photo dirs into categories, but it is up to you to ensure that there are no symlink loops that would cause an infinite scan.

-e, --center

Disable window centering.

-w, --fixed_width x

Window with fixed width x.

-W, --fixed_zoom x.

Window with fixed zoom factor (percentage x).

--highDPIfactor FLOAT

Resize everything by this factor to compensate for high (or also low) DPI screens.

-x, --root file

Set file as the current desktop background (centered) and exit.

-y, --root_t file

Set file as the current desktop background (tiled) and exit.

-z, --root_s file

Set file as the current desktop background (stretched) and exit.

-m, --maxpect

Expand image(s) to fit screen size while preserving aspect ratio.

-t, --scale_down

Shrink image(s) which are larger than screen size to fit.

-b, --brightness x

Set brightness to x (-32..32).

-c, --contrast x

Set contrast to x (-32..32).

-g, --gamma x

Set gamma to x (-32..32).

-n, --no_filter

Disable filtering of images by extension. Normally, qiv will only load images with an image extension such as .jpg, .png, .gif ... This option lets you load any file as an image.

-i, --no_statusbar

Disable statusbar.

-I, --statusbar

Enable statusbar.

-J, --showJPEGcomments

Enable display of JPEG comments.

-E, --showArtistName

Enable display of artist (author) name (in JPEG images).

--artist_ignore STRING

Do NOT show artist name if it is equal to this string

-p, --transparency

Enable transparency for transparent images.

-a, --do_grab

Grab the pointer in windowed mode.

-G, --disable_grab

Disable grabbing the pointer/kbd in fullscreen mode. Useful e.g. if qiv displays images on a display other than where it was invoked from. Use with caution!

-v, --version

Print version information.

-o, --bg_color x

Set root background color to named color x or 24 bit hex RGB triple in the format #RRGGBB.

-C, --cycle

Change cycle behaviour. qiv will exit after last picture has been shown.

-s, --slide

Start slideshow immediately. This can also be used for the desktop background (x/y/z).

-r, --random

Randomize slideshow.

-R, --readonly

Disable the deletion feature.

-S, --shuffle

Shuffle images (random order with next/previous functionality).

-d, --delay x

Set slideshow delay to x seconds.

-f, --fullscreen

Use fullscreen window on start-up.

-P, --ignore_path_sort

Sort all the image files by just their filename, ignoring the path.

-M, --merged_case_sort

Sort all the image files in merged-case order (AaBbCc...).

-K, --mtime_sort

Sort files by their modification time

-N, --numeric_sort

A "smart" numeric sort that attempts to sort filenames with numbers in a logical manner. For instance: 2.jpg sorts before 10.jpg; 1foo.jpg through 10foo.jpg sorts after 1bar.jpg through 15bar.jpg (because "foo" comes after "bar"); and baz0001.jpg through baz0010.jpg sorts after baz01.jpg through baz99.jpg (because the longer group of zero-padded digits indicates that they shouldn’t be intermingled).

-D, --no_sort

Do not apply any sorting to the list of files.

-T, --watch

Reload the image if it has changed on disk.

-A, --select_dir dir

Store the selected files in dir (default is .qiv-select).

-q, --rotate x

Rotate each image 90(x=1),180(x=2),270(x=3) degrees clockwise. If x=11 or x=13, the 90 or 270 degree rotation is conditional on the image fitting better if rotated. e.g. if the display is wide and a tall image is too tall to fit on the screen, it will be rotated.

-l, --autorotate

Do NOT autorotate JPEGs according to EXIF rotation tag. Default is ON.

-X, --xineramascreen x

Use monitor x as preferred screen

-Y, --source_profile x

Use color profile file x as source profile for all images

-Z, --display_profile x

Use color profile file x as display profile for all images

-B, --browse

This option is useful when configuring qiv to be used with a file manager. qiv will scan the directory of the clicked image and allow you to scroll through those images.


Use users trash bin instead of .qiv-trash. Undeleting an image will not work, open the trash bin and restore the image instead.


Enable movement with h/j/k/l, vi-style (HJKL will do what hjkl previously did)


qiv -atsd2 *.jpg
qiv --maxpect --root image.png
qiv --maxpect --slide --random --delay=2 *
qiv --maxpect --scale_down --slide --delay=2 ’find / *’
qiv --bg_color 0000FF --root image.png
qiv --bg_color blue --root image.png


space/left mouse/wheel right next picture
backspace/right mouse/wheel left previous picture
PgDn/wheel down 5 pictures forward
PgUp/wheel up 5 pictures backward
q/ESC/middle mouse exit

0-9 run ’qiv-command <key> <current-img>’
^...<return> run ’qiv-command ^... <current-img>’ where ... can be any string
?/F1 show keys
F11/F12 in/decrease slideshow delay (1 second)
a copy picture to .qiv-select
A artist (author) info on/off
d/D/del move picture to .qiv-trash (-R disables this feature)
(if started with --trashbin picture is moved to users trash bin)
u undelete the previously trashed image (not working if --trashbin is used)
+/=/mouse btn 9 zoom in (+10% / +50% if above 100%)
-/mouse btn 8 zoom out (10%)
e center mode on/off
f fullscreen mode on/off
m scale to screen size on/off
t scale down on/off
X cycle through monitors
s slide show on/off
p transparency on/off
r random order on/off
b - brightness
B + brightness
c - contrast
C + contrast
g - gamma
G + gamma
o reset brightness, contrast, gamma
h flip horizontally
v flip vertically
k rotate right
l rotate left
jtx<return> jump to image number x
jfx<return> jump forward x images
jbx<return> jump backward x images
enter/return reset zoom, rotation and color settings
E display Exif information
i statusbar on/off
J JPEG comments on/off
I iconify window
w watch file on/off
x center image on background
y tile image on background
z stretch image on background
, grab on/off
< turn on/off magnifying window
arrow keys/wheel move image (in fullscreen mode)
arrow keys/wheel+Shift move image faster (in fullscreen mode)
NumPad-arrow keys+NumLock move image faster (in fullscreen mode)


Button 1 next picture
Button 1 (hold down) & Mouse-Move moving picture
Button 2 quit
Button 3 previous picture
Wheel Up/Dn move image vertically
Wheel Left/Right move image horizontally
Extra mouse buttons (8,9) zoom out/in (10%)


qiv doesn’t actually delete files. It creates a directory named ".qiv-trash" and moves the images to that directory. qiv maintains the directory structure of your "deleted" images. You can also undelete the most recently trashed images in reverse order, which moves each file back into its original directory. There is a limit to how many deletions can be undone, but it should be pretty large (currently 1024 items). Sometimes this feature might be unwanted. To prevent accidents you can specify the "-R" option to disable this feature. If the "--trashbin" option is used qiv will move the deleted pictures to the users trash bin. In that case undeleting with pressing "u" will not work. Open the trash bin and restore the image instead.


With XFree86 3.3.2+ server, using the wheel is seen as button 4 and 5 pressed. You only have to use "IMPS/2" or "Intellimouse" for protocol and add "ZAxisMapping 4 5 " in the "Pointer" section of XF86Config. If imwheel (a program used to emulate key pressed when wheel is used for program not supporting wheel), the following two lines must be add to imwheel config file :



Keys 0-9 will invoke qiv-command with the key pressed as the first argument and the current image filename as the second argument. qiv-command is not distributed with qiv; it is to be supplied by the user. Thus, this feature could be enabled by placing a simple shell script such as the following in the command search path (for example, in the user’s ~/bin directory):

# Argument sanity checking eliminated for brevity
case $1 in
0|1|2|3|4|5|6|7|8|9) mkdir -f dir$1; mv "$fname" dir$1 ;;
*) echo "unrecognized command"; exit ;;

If the first line of the output is like "NEWNAME=xxxxxxx" then qiv thinks that the filename of the currently displayed image has changed to this new name and updates its internal filelist. This is very useful when using qiv-command to rename files.

Please also see the example that came together with qiv.


Adam Kopacz <adam.k [AT]>
Andy Spiegl <qiv.andy [AT]>
Darren Smith <darren.smith [AT]>
Pavel Andreev <paxvel [AT]>
Decklin Foster <decklin [AT]>
Holger Mueller <hmueller [AT]>
Scott Sams <sbsams [AT]>
Serge Winitzki <winitzki [AT]>
Frederic Crozat <fcrozat [AT]>
Rutger Nijlunsing <rutger [AT]>
John Knottenbelt <jak97 [AT]>
Danny <dannys [AT]>
Tomas Ogren <stric [AT]>
Erik Jacobsen <erik [AT]>
Alfred Weyers <alfred [AT] otto.DE>
Daniel <danad157 [AT]>
Henning Kulander <hennikul [AT]>
Ask Bjoern Hansen <ask [AT]>
Adrian Lopez <adrian2 [AT]>
Y Furuhashi <y_furuhashi [AT]>
Wayne Davison <wayned [AT]>
Johannes Stezenbach <js [AT]>
OEyvind Kolaas <pippin [AT]>
Matthieu Castet <castet.matthieu [AT]>
Geoffrey T. Dairik <dairiki [AT]>
Leopoldo Cerbaro <redbliss [AT]>
Heikki Lehvaslaiho <heikki [AT]>
Larry Doolittle <ldoolitt [AT]>
S. Dobrev <sdobrev [AT]>
Thomas Wiegner <wiegner [AT]>
Barry deFreese <bdefreese [AT]>
Peter deWachter <pdewacht [AT]>
Akos Pasztory <akos.pasztory [AT]>


qiv homepage:

homepage of original author Adam Kopacz <adam.k [AT]>

Mail bug, reports and comments to Andy Spiegl <qiv.andy [AT]>

Sending a SIGUSR1 to qiv will cause the program to flip to next picture. SIGUSR2 will move to previous.

This program is covered by the GNU GPL; see the file COPYING for details.