• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H29-Nov-2020-1915

backends/H29-Nov-2020-2,4271,813

lib/H29-Nov-2020-2,1981,495

GNUmakefileH A D29-Nov-202011 KiB290228

LICENSEH A D29-Nov-202034.3 KiB675553

README.markdownH A D29-Nov-202016 KiB390328

configureH A D03-May-202212 KiB403351

pqiv.1H A D29-Nov-202029.3 KiB808754

pqiv.cH A D03-May-2022296.6 KiB8,2416,645

pqiv.hH A D29-Nov-202010.2 KiB310152

README.markdown

1PQIV README
2===========
3
4About pqiv
5----------
6
7pqiv is a powerful GTK 3 based command-line image viewer with a minimal UI. It
8is highly customizable, can be fully controlled from scripts, and has support
9for various file formats including PDF, Postscript, video files and archives.
10It is optimized to be quick and responsive.
11
12It comes with support for animations, slideshows, transparency, VIM-like key
13bindings, automated loading of new images as they appear, external image
14filters, marks, image preloading, and much more.
15
16pqiv started as a Python rewrite of qiv avoiding imlib, but evolved into a much
17more powerful tool. Today, pqiv stands for powerful quick image viewer.
18
19Features
20--------
21
22 * Recursive loading from directories
23 * Can watch files and directories for changes
24 * Sorts images in natural order
25 * Has a status bar showing information on the current image
26 * Comes with transparency support
27 * Can move/zoom/rotate/flip images
28 * Can pipe images through external filters
29 * Loads the next image in the background for quick response times
30 * Caches zoomed images for smoother movement
31 * Supports fade image transition animations
32 * Supports various image and video formats through a rich set of backends
33 * Comes with an interactive montage mode (a.k.a. "image grid")
34 * Customizable key-bindings with support for VIM-like key sequences, action
35   cycling and binding multiple actions to a single key
36 * Mark/unmark images and pipe the list of marked images to an external script
37
38Installation
39------------
40
41Usual stuff. `./configure && make && make install`. The configure script is
42optional if you only want gdk-pixbuf support and will auto-determine which
43backends to build if invoked without parameters.
44
45You can also use precompiled and packaged versions of pqiv. Note that the
46distribution packages are usually somewhat out of date:
47
48 * [Nightly builds for Debian, Ubuntu, SUSE and Fedora](https://build.opensuse.org/package/show/home:phillipberndt/pqiv)
49   thanks to the OpenSUSE build service
50 * [Arch AUR package](https://aur.archlinux.org/packages/pqiv/)
51   ([Git version](https://aur.archlinux.org/packages/pqiv-git/))
52 * [CRUX port](https://crux.nu/portdb/?a=search&q=pqiv)
53 * [Debian package](https://packages.debian.org/en/sid/pqiv)
54 * [FreeBSD port](https://www.freshports.org/graphics/pqiv/)
55 * [Gentoo ebuild](https://packages.gentoo.org/packages/media-gfx/pqiv)
56 * [macOS brew](http://braumeister.org/formula/pqiv)
57 * [NixOS package](https://github.com/NixOS/nixpkgs/blob/HEAD/pkgs/applications/graphics/pqiv/default.nix)
58 * [OpenBSD port](http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/graphics/pqiv/)
59
60If you'd like to compile pqiv manually, you'll need
61
62 * gtk+ 3.0 *or* gtk+ 2.6
63 * gdk-pixbuf 2.2 (included in gtk+)
64 * glib 2.32 (with gvfs for opening URLs)
65 * cairo 1.6
66 * gio 2.0
67 * gdk 2.8
68
69and optionally also
70
71 * ffmpeg / libav (for video support)
72 * libarchive (for images in archives and cbX comic book files)
73 * libspectre (any version, for ps/eps support)
74 * libwebp (for WebP support)
75 * MagickWand (any version, for additional image formats like psd)
76 * poppler (any version, for pdf support)
77
78The backends are per default linked statically into the code, so all backend
79related build-time dependencies are also run-time dependencies. If you need a
80shared version of the backends, for example for separate packaging of the
81binaries or to make the run-time dependencies optional, use the
82`--backends-build=shared` configure option.
83
84For macOS, have a look at the `pqiv.app` target of the Makefile, too.
85
86pqiv can be linked statically, though GTK only supports static linking in
87GTK 2.x; in early versions of GTK 3.x it was fairly simple to still link
88statically.
89
90Windows builds are supported and work in GTK 2.x, it is recommended to use
91[MXE](https://mxe.cc/) for cross-compiling.
92
93Thanks
94------
95
96This program uses Martin Pool's natsort algorithm
97<https://www.github.com/sourcefrog/natsort/>.
98
99Contributors
100------------
101
102Contributors to pqiv 2.x are:
103
104 * J. Paul Reed
105 * Chen Jonh L
106 * Anton Älgmyr
107 * Christian Garbs
108 * Kanon Kubose
109
110Contributors to pqiv ≤ 1.0 were:
111
112 * Alexander Sulfrian
113 * Alexandros Diamantidis
114 * Brandon
115 * David Lindquist
116 * Hanspeter Gysin
117 * John Keeping
118 * Nir Tzachar
119 * Rene Saarsoo
120 * Tinoucas
121 * Yaakov
122
123Known bugs
124----------
125
126* **The window is centered in between two monitors in old multi-head setups**:
127  This happens if you have the RandR extension enabled, but configured
128  incorrectly. GTK is programmed to first try RandR and use Xinerama only as
129  a fallback if that fails. (See `gdkscreen-x11.c`.) So if your video drivers
130  for some reason detect your multiple monitors as one big screen you can not
131  simply use fakexinerama to fix things. This might also apply to nvidia drivers
132  older than version 304. I believe that I can not fix this without breaking
133  functionality for other users or maintaining a blacklist, so you should
134  deactivate RandR completely until your driver is able to provide correct
135  information, or use a fake xrand (like
136  [mine](https://github.com/phillipberndt/fakexrandr), for example)
137
138* **Loading postscript files failes with `Error #12288; Unknown output format`**:
139  This issue happens if your poppler and spectre libraries are linked against
140  different versions of libcms. libcms and libcms2 will both be used, but
141  interfere with each other. Compile using `--backends-build=shared` to
142  circumvent this issue.
143
144Examples
145--------
146
147Basic usage of pqiv is very straightforward, call
148
149    pqiv <files or directories>
150
151and then use space, backspace, `f` (for fullscreen), `q` (to quit), and `m` for
152the montage overview to navigate through your images. To see all key bindings,
153see the `DEFAULT KEY BINDINGS` section of the man-page, or run
154`pqiv --show-bindings`.
155
156For some advanced uses of pqiv, take a look at these resouces:
157
158* [Play music while looking at specific images](https://github.com/phillipberndt/pqiv/issues/100#issuecomment-320651190)
159* <details><summary>Bind keys to cycle through panels of a 2x2 comic</summary>
160
161  Store this in your `.pqivrc`:
162  ```
163  # Bind c to act as if "#c1" was typed
164  c { send_keys(#c1); }
165  # If "#c1" is typed, shift the current image to it's north west corner, and
166  # rebind "c" to act as if "#c2" was typed
167  <numbersign>c1 { set_shift_align_corner(NW); bind_key(c { send_keys(#c2\); }); }
168  # ..etc..
169  <numbersign>c2 { set_shift_align_corner(NE); bind_key(c { send_keys(#c3\); }); }
170  <numbersign>c3 { set_shift_align_corner(SW); bind_key(c { send_keys(#c4\); }); }
171  # The last binding closes the cycle by rebinding "c" to act as if "#c1" was typed
172  <numbersign>c4 { set_shift_align_corner(SE); bind_key(c { send_keys(#c1\); }); }
173  ```
174
175  </details>
176
177
178Changelog
179---------
180
181pqiv 2.12
182 * Fix external image filters (Fixes #182)
183 * Fix support for `best` interpolation quality (Fixes #139)
184 * Fix wrap-around in shuffled image view (Fixes #176)
185 * Fix max-depth behavior if the argument is a file (Fixes #170)
186 * Allow keybinding of special keys with shift modifier
187 * Add `--auto-montage-mode` (Fixes #181)
188 * Replace GTimeVal with GDateTime for glib 2.62 support
189 * Add an sxiv-like marks system
190
191<details>
192<summary>Click to expand changelog for old pqiv versions</summary>
193
194pqiv 2.11
195 * Added negate (color inversion) mode (bound to `n`, `--negate`)
196 * Rebound `a` (hardlink image) to `c-a` by default (See #124)
197 * Improved key bindings documentation (See #127)
198 * Add `--actions-from-stdin` and let it block until actions are completed
199   (See #118/#119)
200 * Fix zooming on tiling WMs (See #129)
201 * Support ffmpeg 4.0 API
202 * Fix cross-compiling with X11 (Debian #913589)
203 * Fix resizing in WMs without moveresize support (See #130)
204 * Work around GTK bug resulting in crash due to invalid free()
205 * Improve autotools compatibility of the configure script (See #135)
206
207pqiv 2.10.4
208 * Fix output of `montage_mode_shift_y_rows()` in key bindings
209 * Update the info text when the background pattern is cycled
210 * Prevent potential crashes in poppler backend for rapid image movements
211 * Fix processing of dangling symlinks in the file buffer
212 * Removed possible deadlock in ImageMagick wand backend
213 * Fix --command-9 shortcut
214 * Makefile: Move -shared compiler flag to the end of the command line
215
216pqiv 2.10
217 * Enable cursor auto-hide by default
218 * Enable mouse navigation in montage mode
219 * Added `toggle_background_pattern()` (bound to `b`) and
220   `--background-pattern`.
221 * Added support for alternate pqivrc paths, changed recommended location to
222   ./.config/pqivrc.
223 * Sped up `--low-memory` mode (using native- instead of image-surfaces)
224 * Fixed graphical issues with fading mode and quick image transition
225 * Fixed support for platforms with `sizeof(time_t) != sizeof(int)`
226 * Fixed a race condition in the file buffer map
227
228pqiv 2.9
229 * Added a montage/image grid mode (bound to `m` by default)
230 * Added a [WebP](https://developers.google.com/speed/webp/) backend
231   (by @john0312)
232 * Added the means to skip over "logical" directories, such as archive files
233   (bound to `ctrl+space` and `ctrl+backspace` by default)
234 * Improved responsivity by caching pre-scaled copies of images
235 * Removed tearing/flickering in WMs without extended frame sync support
236 * Fixed support for huge images (>32,767px) in the GdkPixbuf backend
237 * Added option --info-box-colors to customize the colors used in the info box
238 * It is now possible to view --help even if no display is available
239 * Added --version
240 * Added an auto scale mode that maintains window size
241 * Bound `Control+t` to switch to "maintain scale level" by default
242 * Bound `Alt+t` to switch to "maintain window size" by default
243 * Added action `move_window()` to explicitly move pqiv's main window around
244
245pqiv 2.8.5
246 * Fixed an issue where the checkerboard pattern sometimes was visible at image
247   borders
248 * Fixed image rotation in low-memory mode
249 * Fix a memory leak (leaking a few bytes each time an image is drawn)
250 * Correctly handle string arguments from the configuration file
251 * Fix building with old glib versions that do not expose their x11 dependency
252   in pkgconfig
253 * Fix support for duplicate files in sorted mode
254 * Fix MagickWand exit handler code
255
256pqiv 2.8
257 * Added option --allow-empty-window: Show pqiv even if no images can be loaded
258 * Explicitly allow to load all files from a directory multiple times
259 * Allow to use --libdir option in configure to override .so-files location
260 * Fix shared-backend-pqiv in environments that compile with --enable-new-dtags
261 * Enable the libav backend by default
262 * Add option --disable-backends to disable backends at runtime
263
264pqiv 2.7.4
265 * Fix GTK 2 compilation
266 * Fix backends list in configure script
267 * Fix race condition upon reloading animations
268 * Fix Ctrl-R default binding (move `goto_earlier_file()` to Ctrl-P)
269
270pqiv 2.7
271 * Fixed window decoration toggling with --transparent-background
272 * Work around bug #67, poppler bug #96884
273 * Added new action `set_interpolation_quality` to change interpolation/filter
274   mode
275 * pqiv now by default uses `nearest` interpolation for small images
276 * Added actions and key bindings to control animation playback speed
277 * Added a general archive backend for reading images from archives
278 * Added a new action `goto_earlier_file()` to return to the image that was
279   shown before the current one
280 * Added a new action `set_cursor_auto_hide()` to automatically hide the pointer
281   when it is not moved for some time
282 * Support an `actions` section in the configuration file for default actions
283 * Create and install a desktop file for pqiv during install
284 * Disable GTK's transparent scaling on HiDpi monitors
285 * New option --wait-for-images-to-appear to wait for images to appear if none
286   are found
287
288pqiv 2.6
289 * Added --enforce-window-aspect-ratio
290 * Do not enforce the aspect ratio of the window to match the image's by default
291
292pqiv 2.5.1
293 * Prevent a crash in --lazy-load mode if many images fail to load
294
295pqiv 2.5
296 * Added a configure option to build the backends as shared libraries
297 * Added a configure option to remove unneeded/unwanted features
298 * Added --watch-files to make the file-changed-on-disk action configurable
299 * Added support for cbz/cbr/cbt/cb7 comic books
300 * Key bindings are now configurable
301 * Deprecated --keyboard-alias and --reverse-cursor-keys in favor of
302   --bind-key.
303 * Added --actions-from-stdin to make pqiv scriptable
304 * Added --recreate-window to create a new window instead of resizing the
305   old one, as a workaround for buggy window managers
306 * Fixed crash on reloading of images created by pipe-command output
307
308pqiv 2.4.1
309 * Fix --end-of-files-action=quit if only one file is present
310 * Fixed libav backend's pkg-config dependency list (by @onodera-punpun)
311 * Enable image format support in the libav backend
312
313pqiv 2.4
314 * Added --sort-key=mtime to sort by modification time instead of file name
315 * Delay the "Image is still loading" message for half a second to avoid
316   flickering status messages
317 * Remove the "Image is still loading" message if --hide-info-box is set
318 * Added [libav](https://www.ffmpeg.org/) backend for video support
319 * Added --end-of-files-action=action to allow users to control what happens
320   once all images have been viewed
321 * Fix various minor memory allocation issues / possible race conditions
322
323pqiv 2.3.5
324 * Fix parameters in pqivrc that are handled by a callback
325 * Fix reference counting if an image fails to load
326 * Properly reload multi-page files if they change on disk while being viewed
327 * Properly handle if a user closes pqiv while the image loader is still active
328
329pqiv 2.3
330 * Refactored an abstraction layer around the image backend
331 * Added optional support for PDF-files through
332   [poppler](http://poppler.freedesktop.org/)
333 * Added optional support for PS-files through
334   [libspectre](http://www.freedesktop.org/wiki/Software/libspectre/)
335 * Added optional support for more image formats through
336   [ImageMagick's MagickWand](http://www.imagemagick.org/script/magick-wand.php)
337 * Support for gtk+ 3.14
338 * configure/Makefile updated to support (Free-)BSD
339 * Added ctrl + space/backspace hotkey for jumping to the next/previous directory
340 * Improved pqiv's reaction if a file is removed
341 * gtk 3.16 deprecates `gdk_cursor_new`, replaced by a different function
342 * Shuffle mode is now toggleable at run-time (using Ctrl-R)
343
344pqiv 2.2
345 * Accept URLs as command line arguments
346 * Revived -r for reading additional files from stdin (by J.P. Reed)
347 * Display the help message if invoked without parameters (by J.P. Reed)
348 * Accept floating point slideshow intervals on the command line
349 * Update the info box with the current numbers if (new) images are (un)loaded
350 * Added --max-depth=n to limit how deep directories are searched
351 * Added --browse to load, in addition to images from the command line, also
352   all other images from the containing directories
353 * Bugfix: Fixed handling of non-image command line arguments
354
355pqiv 2.1
356 * Support for watching directories for new files
357 * Downstream Makefile fix: Included LDFLAGS (from Gentoo package, by Tim
358   Harder), updated for clean builds on OpenBSD (by jca[at]wxcvbn[dot]org,
359   reported by github user @clod89)
360 * Also included CPPFLAGS, for completeness
361 * Renamed '.qiv-select' directory to '.pqiv-select'
362 * Added a certain level of autoconf compatibility to the configure script, for
363   automated building
364 * gtk 3.10 stock icon deprecation issue fixed
365 * Reimplemented fading between images
366 * Display the last image while the current image has not been loaded
367 * Gave users the option to abort the loading of huge images
368 * Respect --shuffle and --sort with --watch-directories, i.e. insert keeping
369   order, not always at the end
370 * New option --lazy-load to display the main window while still traversing
371   paths, searching for images
372 * New option --low-memory to disable memory hungry features
373 * Detect nested symlinks without preventing users from loading the same image
374   multiple times
375 * Improved cross-compilation support with mingw64
376
377pqiv 2.0
378 * Complete rewrite from scratch
379 * Based on GTK 3 and Cairo
380
381pqiv ≤ 1.0
382 * See the old GTK 2 release for information on that
383   (in the **gtk2** branch on github)
384
385pqiv ≤ 0.3
386 * See the old python release for information on that
387   (in the **python** branch on github)
388
389</details>
390