qiv(1)

πŸ’– qiv β€” the fast gdk3/gdk2 image viewer for X πŸ’–

okay bestie, so qiv is literally an image viewer built with gdk3/gdk2, and that's the whole reason it's faster than the old-school traditional image viewers like xv or xli. no cap. it just eats. πŸ”₯

Version: 3.0.4, released on 2026-04-19 by Andy Spiegl β€” http://qiv.spiegl.de/ β€” qiv.andy@spiegl.de originally by Adam Kopacz / KLOGRAFX.DE Network β€” http://www.klografx.net/qiv/ β€” adam.k@klografx.de


✨ SYNOPSIS ✨

qiv [options] file ...

πŸ¦‹ DESCRIPTION πŸ¦‹

qiv is an image viewer developed with gdk3/gdk2. bc of that, qiv is faster than those traditional image viewers such as xv or xli. it's giving main character energy tbh. πŸ’…


πŸŽ€ OPTIONS πŸŽ€

yes bestie there are a LOT of them. every single one is here. do not panic. we go through them one by one, periodt.

  • -h, --help β€” prints out a brief help message for you. 🫢
  • --display disp β€” opens the qiv window on display disp.
  • -F, --file file | stdin β€” reads file names from file or stdin, one name per line. you can specify this option multiple times to read from several files, and it will not affect other file names passed on the command line.
  • -u, --recursivedir β€” changes qiv's behaviour so it recursively descends into the directories given on the command line.
  • -L, --followlinks β€” with --recursivedir, this lets a symlink point to a directory. super 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. like, protect your machine bestie. 😭
  • -e, --center β€” disables window centering.
  • -w, --fixed_width x β€” window with fixed width x.
  • -W, --fixed_zoom x. β€” window with fixed zoom factor (percentage x).
  • --highDPIfactor FLOAT β€” resizes everything by this factor to compensate for high (or also low) DPI screens.
  • -x, --root file β€” sets file as the current desktop background (centered) and exits.
  • -y, --root_t file β€” sets file as the current desktop background (tiled) and exits.
  • -z, --root_s file β€” sets file as the current desktop background (stretched) and exits.
  • -m, --maxpect β€” expands image(s) to fit screen size while preserving aspect ratio.
  • -t, --scale_down β€” shrinks image(s) which are larger than screen size to fit.
  • -b, --brightness x β€” sets brightness to x (-50..50).
  • -c, --contrast x β€” sets contrast to x (-50..100).
  • -g, --gamma x β€” sets gamma to x (-50..100).
  • -n, --no_filter β€” disables filtering of images by extension. normally qiv will only load images with an image extension such as .jpg, .png, .gif ... but this option lets you load any file as an image. chaotic but iconic.
  • -i, --no_statusbar β€” disables statusbar.
  • -I, --statusbar β€” enables statusbar.
  • -J, --showJPEGcomments β€” enables display of JPEG comments.
  • -E, --showArtistName β€” enables display of artist (author) name (in JPEG images).
  • --artist_ignore STRING β€” does NOT show artist name if it is equal to this string.
  • -p, --transparency β€” enables transparency for transparent images.
  • -a, --do_grab β€” grabs the pointer in windowed mode.
  • -G, --disable_grab β€” disables 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 β€” prints version information.
  • -o, --bg_color x β€” sets root background color to named color x or 24 bit hex RGB triple in the format #RRGGBB.
  • -C, --cycle β€” changes cycle behaviour. qiv will exit after last picture has been shown.
  • -s, --slide β€” starts slideshow immediately. this can also be used for the desktop background (x/y/z).
  • -r, --random β€” randomizes slideshow.
  • -R, --readonly β€” disables the deletion feature.
  • -S, --shuffle β€” shuffles images (random order with next/previous functionality).
  • -d, --delay x β€” sets slideshow delay to x seconds.
  • -f, --fullscreen β€” uses fullscreen window on start-up.
  • -P, --ignore_path_sort β€” sorts all the image files by just their filename, ignoring the path.
  • -M, --merged_case_sort β€” sorts all the image files in merged-case order (AaBbCc...).
  • -K, --mtime_sort β€” sorts 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). she's smart, she's organized, she ate. πŸ‘‘
  • -D, --no_sort β€” does not apply any sorting to the list of files.
  • -T, --watch β€” reloads the image if it has changed on disk.
  • -A, --select_dir dir β€” stores the selected files in dir (default is .qiv-select).
  • -q, --rotate x β€” rotates 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 β€” does NOT autorotate JPEGs according to EXIF rotation tag. default is ON.
  • -X, --xineramascreen x β€” uses monitor x as preferred screen.
  • -Y, --source_profile x β€” uses color profile file x as source profile for all images.
  • -Z, --display_profile x β€” uses 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.
  • --trashbin β€” uses user's trash bin instead of .qiv-trash. undeleting an image will not work, open the trash bin and restore the image instead.
  • --vikeys β€” enables movement with h/j/k/l, vi-style (HJKL will do what hjkl previously did).

🌸 EXAMPLES 🌸

run these bestie, they're cute:

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

πŸ’… KEYS πŸ’…

okay so the keys are the whole personality of this app. memorize them, no cap.

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 user's 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)

πŸ–±οΈ MOUSE CONTROLS πŸ–±οΈ

  • 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%)

πŸ—‘οΈ DELETING πŸ—‘οΈ

okay so important: 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 user's trash bin. in that case undeleting with pressing u will not work. open the trash bin and restore the image instead. πŸ“Œ

lowkey the whole thing is reversible-ish but bestie, don't be reckless with your photos. πŸ’€

πŸ–²οΈ IMWHEEL SUPPORT πŸ–²οΈ

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:

"qiv"
@Exclude

✨ USER-DEFINED KEYBOARD ACTIONS ✨

okay bestie this is the part where qiv lets you drive πŸ˜ŒπŸ’…

The keys 0 through 9 will invoke qiv-command with the key you pressed as the first argument and the current image filename as the second argument. So yeah, you get ten whole custom slots and qiv will just hand it the key number and the file. iconic.

Real talk though: qiv-command is not distributed with qiv. it's not included, it's not bundled, it's to be supplied by the user. you have to write it yourself, bestie. the feature gets enabled by dropping a simple shell script in your command search path (for example, in the user's ~/bin directory) 🫢

and like, it could literally look something like this:

#!/bin/sh
# 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 ;;
esac
heads up: that "Argument sanity checking eliminated for brevity" comment is doing a LOT of heavy lifting in that script. it's the original's own little disclaimer, not mine 😭

now here's the ✨magic trick✨ β€” if the first line of the output looks 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. so if your qiv-command renames files, qiv keeps up with you instead of getting confused. it's giving main character energy, no cap πŸ”₯

also please check out the example that came together with qiv, it's right there and it's helpful 🌸


πŸ‘‘ AUTHORS πŸ‘‘

the absolute legends, the founding mothers and fathers of the vibe, the whole squad that made this happen β€” every single one of them, in order, no skips:

  • Adam Kopacz <adam.k@klografx.de>
  • Andy Spiegl <qiv.andy@spiegl.de>
  • Darren Smith <darren.smith@juno.com>
  • Pavel Andreev <paxvel@vumsoft.cz>
  • Decklin Foster <decklin@red-bean.com>
  • Holger Mueller <hmueller@hrzpub.tu-darmstadt.de>
  • Scott Sams <sbsams@eos.ncsu.edu>
  • Serge Winitzki <winitzki@geocities.com>
  • Frederic Crozat <fcrozat@mail.dotcom.fr>
  • Rutger Nijlunsing <rutger@wingding.demon.nl>
  • John Knottenbelt <jak97@doc.ic.ac.uk>
  • Danny <dannys@mail.com>
  • Tomas Ogren <stric@ing.umu.se>
  • Erik Jacobsen <erik@openix.com>
  • Alfred Weyers <alfred@otto.gia.RWTH-Aachen.DE>
  • Daniel <danad157@student.liu.se>
  • Henning Kulander <hennikul@ifi.uio.no>
  • Ask Bjoern Hansen <ask@valueclick.com>
  • Adrian Lopez <adrian2@caribe.net>
  • Y Furuhashi <y_furuhashi@ot.olympus.co.jp>
  • Wayne Davison <wayned@users.sourceforge.net>
  • Johannes Stezenbach <js@convergence.de>
  • OEyvind Kolaas <pippin@users.sourceforge.net>
  • Matthieu Castet <castet.matthieu@free.fr>
  • Geoffrey T. Dairik <dairiki@dairiki.org>
  • Leopoldo Cerbaro <redbliss@aliceposta.it>
  • Heikki Lehvaslaiho <heikki@sanbi.ac.za>
  • Larry Doolittle <ldoolitt@boa.org>
  • S. Dobrev <sdobrev@sistechnology.com>
  • Thomas Wiegner <wiegner@gmx.de>
  • Barry deFreese <bdefreese@debian.org>
  • Peter deWachter <pdewacht@gmail.com>
  • Akos Pasztory <akos.pasztory@gmail.com>

thirty-two whole humans. a whole community. we love to see it πŸ’–


🌈 MISC 🌈

the random-but-important section, aka the vibes checklist:

  • qiv homepage: http://qiv.spiegl.de/
  • homepage of original author Adam Kopacz <adam.k@klografx.de> β€” http://www.klografx.net/qiv/
  • Mail bug, reports and comments to Andy Spiegl <qiv.andy@spiegl.de> πŸ“¬
  • Sending a SIGUSR1 to qiv will cause the program to flip to next picture. SIGUSR2 will move to previous. so you can yeet signals at it from the outside and it'll still land on beat 😌
  • This program is covered by the GNU GPL; see the file COPYING for details πŸ“„
fr fr, that GPL line is load-bearing β€” go read your COPYING file, bestie.

and that's a wrap on qiv(1), the fast image viewer for X, section 1, name qiv β€” that little footer line at the bottom of the page, the one that says qiv in the middle and qiv(1) on the right? that's it, that's the source and version and the date stamp of this whole masterpiece, and honestly it ate. slay, go look at some pictures πŸ’…πŸ¦‹πŸ‘‘

πŸ“¦ where this page comes from