Giter Site home page Giter Site logo

phillipberndt / pqiv Goto Github PK

View Code? Open in Web Editor NEW
283.0 15.0 42.0 2.59 MB

Powerful image viewer with minimal UI

Home Page: http://www.pberndt.com/Programme/Linux/pqiv/index.html

License: GNU General Public License v3.0

Makefile 2.24% C 91.71% Shell 0.09% Roff 5.96%
image-viewer command-line c graphics gtk3 pdf-viewer animation-viewer

pqiv's Introduction

PQIV README

About pqiv

pqiv is a powerful GTK 3 based command-line image viewer with a minimal UI. It is highly customizable, can be fully controlled from scripts, and has support for various file formats including PDF, Postscript, video files and archives. It is optimized to be quick and responsive.

It comes with support for animations, slideshows, transparency, VIM-like key bindings, automated loading of new images as they appear, external image filters, marks, image preloading, and much more.

pqiv started as a Python rewrite of qiv avoiding imlib, but evolved into a much more powerful tool. Today, pqiv stands for powerful quick image viewer.

Features

  • Recursive loading from directories
  • Can watch files and directories for changes
  • Sorts images in natural order
  • Has a status bar showing information on the current image
  • Comes with transparency support
  • Can move/zoom/rotate/flip images
  • Can pipe images through external filters
  • Loads the next image in the background for quick response times
  • Caches zoomed images for smoother movement
  • Supports fade image transition animations
  • Supports various image and video formats through a rich set of backends
  • Comes with an interactive montage mode (a.k.a. "image grid")
  • Customizable key-bindings with support for VIM-like key sequences, action cycling and binding multiple actions to a single key
  • Mark/unmark images and pipe the list of marked images to an external script

Installation

Usual stuff. ./configure && make && make install. The configure script is optional if you only want gdk-pixbuf support and will auto-determine which backends to build if invoked without parameters.

You can also use precompiled and packaged versions of pqiv. Note that the distribution packages are usually somewhat out of date:

If you'd like to compile pqiv manually, you'll need

  • gtk+ 3.0 or gtk+ 2.6
  • gdk-pixbuf 2.2 (included in gtk+)
  • glib 2.32 (with gvfs for opening URLs)
  • cairo 1.6
  • Pango 1.10
  • gio 2.0
  • gdk 2.8

and optionally also

  • ffmpeg / libav (for video support)
  • libarchive (for images in archives and cbX comic book files)
  • libspectre (any version, for ps/eps support)
  • libwebp (for WebP support)
  • MagickWand (any version, for additional image formats like psd)
  • poppler (any version, for pdf support)

The backends are per default linked statically into the code, so all backend related build-time dependencies are also run-time dependencies. If you need a shared version of the backends, for example for separate packaging of the binaries or to make the run-time dependencies optional, use the --backends-build=shared configure option.

For macOS, have a look at the pqiv.app target of the Makefile, too.

pqiv can be linked statically, though GTK only supports static linking in GTK 2.x; in early versions of GTK 3.x it was fairly simple to still link statically.

Windows builds are supported and work in GTK 2.x, it is recommended to use MXE for cross-compiling.

Thanks

This program uses Martin Pool's natsort algorithm https://www.github.com/sourcefrog/natsort/.

Contributors

Contributors to pqiv 2.x are:

  • J. Paul Reed
  • Chen Jonh L
  • Anton Älgmyr
  • Christian Garbs
  • Kanon Kubose
  • Wessel Dankers
  • @buzzingwires

Contributors to pqiv ≤ 1.0 were:

  • Alexander Sulfrian
  • Alexandros Diamantidis
  • Brandon
  • David Lindquist
  • Hanspeter Gysin
  • John Keeping
  • Nir Tzachar
  • Rene Saarsoo
  • Tinoucas
  • Yaakov

Known bugs

  • The window is centered in between two monitors in old multi-head setups: This happens if you have the RandR extension enabled, but configured incorrectly. GTK is programmed to first try RandR and use Xinerama only as a fallback if that fails. (See gdkscreen-x11.c.) So if your video drivers for some reason detect your multiple monitors as one big screen you can not simply use fakexinerama to fix things. This might also apply to nvidia drivers older than version 304. I believe that I can not fix this without breaking functionality for other users or maintaining a blacklist, so you should deactivate RandR completely until your driver is able to provide correct information, or use a fake xrand (like mine, for example)

  • Loading postscript files failes with Error #12288; Unknown output format: This issue happens if your poppler and spectre libraries are linked against different versions of libcms. libcms and libcms2 will both be used, but interfere with each other. Compile using --backends-build=shared to circumvent this issue.

Examples

Basic usage of pqiv is very straightforward, call

pqiv <files or directories>

and then use space, backspace, f (for fullscreen), q (to quit), and m for the montage overview to navigate through your images. To see all key bindings, see the DEFAULT KEY BINDINGS section of the man-page, or run pqiv --show-bindings.

For some advanced uses of pqiv, take a look at these resouces:

  • Play music while looking at specific images

  • Bind keys to cycle through panels of a 2x2 comic

    Store this in your .pqivrc:

    # Bind c to act as if "#c1" was typed
    c { send_keys(#c1); }
    # If "#c1" is typed, shift the current image to it's north west corner, and
    # rebind "c" to act as if "#c2" was typed
    <numbersign>c1 { set_shift_align_corner(NW); bind_key(c { send_keys(#c2\); }); }
    # ..etc..
    <numbersign>c2 { set_shift_align_corner(NE); bind_key(c { send_keys(#c3\); }); }
    <numbersign>c3 { set_shift_align_corner(SW); bind_key(c { send_keys(#c4\); }); }
    # The last binding closes the cycle by rebinding "c" to act as if "#c1" was typed
    <numbersign>c4 { set_shift_align_corner(SE); bind_key(c { send_keys(#c1\); }); }
    

Changelog

pqiv 2.13.1

  • Revert to not adding --browse to desktop files (fixes #232)

pqiv 2.13

  • Fix toggle_fullscreen(1/2) behavior when already fullscreen
  • Add --font to adjust info box font, use Pango for rendering (See #221)
  • Prefer x11 over Wayland GDK backend (it overall provides a better experience)
  • Fix Client Side Decorations (CSD), e.g. in Wayland
  • Fix race/crash upon exit (Fixes #227)
Click to expand changelog for old pqiv versions

pqiv 2.12

  • Fix external image filters (Fixes #182)
  • Fix support for best interpolation quality (Fixes #139)
  • Fix wrap-around in shuffled image view (Fixes #176)
  • Fix max-depth behavior if the argument is a file (Fixes #170)
  • Allow keybinding of special keys with shift modifier
  • Add --auto-montage-mode (Fixes #181)
  • Replace GTimeVal with GDateTime for glib 2.62 support
  • Add an sxiv-like marks system

pqiv 2.11

  • Added negate (color inversion) mode (bound to n, --negate)
  • Rebound a (hardlink image) to c-a by default (See #124)
  • Improved key bindings documentation (See #127)
  • Add --actions-from-stdin and let it block until actions are completed (See #118/#119)
  • Fix zooming on tiling WMs (See #129)
  • Support ffmpeg 4.0 API
  • Fix cross-compiling with X11 (Debian #913589)
  • Fix resizing in WMs without moveresize support (See #130)
  • Work around GTK bug resulting in crash due to invalid free()
  • Improve autotools compatibility of the configure script (See #135)

pqiv 2.10.4

  • Fix output of montage_mode_shift_y_rows() in key bindings
  • Update the info text when the background pattern is cycled
  • Prevent potential crashes in poppler backend for rapid image movements
  • Fix processing of dangling symlinks in the file buffer
  • Removed possible deadlock in ImageMagick wand backend
  • Fix --command-9 shortcut
  • Makefile: Move -shared compiler flag to the end of the command line

pqiv 2.10

  • Enable cursor auto-hide by default
  • Enable mouse navigation in montage mode
  • Added toggle_background_pattern() (bound to b) and --background-pattern.
  • Added support for alternate pqivrc paths, changed recommended location to ./.config/pqivrc.
  • Sped up --low-memory mode (using native- instead of image-surfaces)
  • Fixed graphical issues with fading mode and quick image transition
  • Fixed support for platforms with sizeof(time_t) != sizeof(int)
  • Fixed a race condition in the file buffer map

pqiv 2.9

  • Added a montage/image grid mode (bound to m by default)
  • Added a WebP backend (by @john0312)
  • Added the means to skip over "logical" directories, such as archive files (bound to ctrl+space and ctrl+backspace by default)
  • Improved responsivity by caching pre-scaled copies of images
  • Removed tearing/flickering in WMs without extended frame sync support
  • Fixed support for huge images (>32,767px) in the GdkPixbuf backend
  • Added option --info-box-colors to customize the colors used in the info box
  • It is now possible to view --help even if no display is available
  • Added --version
  • Added an auto scale mode that maintains window size
  • Bound Control+t to switch to "maintain scale level" by default
  • Bound Alt+t to switch to "maintain window size" by default
  • Added action move_window() to explicitly move pqiv's main window around

pqiv 2.8.5

  • Fixed an issue where the checkerboard pattern sometimes was visible at image borders
  • Fixed image rotation in low-memory mode
  • Fix a memory leak (leaking a few bytes each time an image is drawn)
  • Correctly handle string arguments from the configuration file
  • Fix building with old glib versions that do not expose their x11 dependency in pkgconfig
  • Fix support for duplicate files in sorted mode
  • Fix MagickWand exit handler code

pqiv 2.8

  • Added option --allow-empty-window: Show pqiv even if no images can be loaded
  • Explicitly allow to load all files from a directory multiple times
  • Allow to use --libdir option in configure to override .so-files location
  • Fix shared-backend-pqiv in environments that compile with --enable-new-dtags
  • Enable the libav backend by default
  • Add option --disable-backends to disable backends at runtime

pqiv 2.7.4

  • Fix GTK 2 compilation
  • Fix backends list in configure script
  • Fix race condition upon reloading animations
  • Fix Ctrl-R default binding (move goto_earlier_file() to Ctrl-P)

pqiv 2.7

  • Fixed window decoration toggling with --transparent-background
  • Work around bug #67, poppler bug #96884
  • Added new action set_interpolation_quality to change interpolation/filter mode
  • pqiv now by default uses nearest interpolation for small images
  • Added actions and key bindings to control animation playback speed
  • Added a general archive backend for reading images from archives
  • Added a new action goto_earlier_file() to return to the image that was shown before the current one
  • Added a new action set_cursor_auto_hide() to automatically hide the pointer when it is not moved for some time
  • Support an actions section in the configuration file for default actions
  • Create and install a desktop file for pqiv during install
  • Disable GTK's transparent scaling on HiDpi monitors
  • New option --wait-for-images-to-appear to wait for images to appear if none are found

pqiv 2.6

  • Added --enforce-window-aspect-ratio
  • Do not enforce the aspect ratio of the window to match the image's by default

pqiv 2.5.1

  • Prevent a crash in --lazy-load mode if many images fail to load

pqiv 2.5

  • Added a configure option to build the backends as shared libraries
  • Added a configure option to remove unneeded/unwanted features
  • Added --watch-files to make the file-changed-on-disk action configurable
  • Added support for cbz/cbr/cbt/cb7 comic books
  • Key bindings are now configurable
  • Deprecated --keyboard-alias and --reverse-cursor-keys in favor of --bind-key.
  • Added --actions-from-stdin to make pqiv scriptable
  • Added --recreate-window to create a new window instead of resizing the old one, as a workaround for buggy window managers
  • Fixed crash on reloading of images created by pipe-command output

pqiv 2.4.1

  • Fix --end-of-files-action=quit if only one file is present
  • Fixed libav backend's pkg-config dependency list (by @onodera-punpun)
  • Enable image format support in the libav backend

pqiv 2.4

  • Added --sort-key=mtime to sort by modification time instead of file name
  • Delay the "Image is still loading" message for half a second to avoid flickering status messages
  • Remove the "Image is still loading" message if --hide-info-box is set
  • Added libav backend for video support
  • Added --end-of-files-action=action to allow users to control what happens once all images have been viewed
  • Fix various minor memory allocation issues / possible race conditions

pqiv 2.3.5

  • Fix parameters in pqivrc that are handled by a callback
  • Fix reference counting if an image fails to load
  • Properly reload multi-page files if they change on disk while being viewed
  • Properly handle if a user closes pqiv while the image loader is still active

pqiv 2.3

  • Refactored an abstraction layer around the image backend
  • Added optional support for PDF-files through poppler
  • Added optional support for PS-files through libspectre
  • Added optional support for more image formats through ImageMagick's MagickWand
  • Support for gtk+ 3.14
  • configure/Makefile updated to support (Free-)BSD
  • Added ctrl + space/backspace hotkey for jumping to the next/previous directory
  • Improved pqiv's reaction if a file is removed
  • gtk 3.16 deprecates gdk_cursor_new, replaced by a different function
  • Shuffle mode is now toggleable at run-time (using Ctrl-R)

pqiv 2.2

  • Accept URLs as command line arguments
  • Revived -r for reading additional files from stdin (by J.P. Reed)
  • Display the help message if invoked without parameters (by J.P. Reed)
  • Accept floating point slideshow intervals on the command line
  • Update the info box with the current numbers if (new) images are (un)loaded
  • Added --max-depth=n to limit how deep directories are searched
  • Added --browse to load, in addition to images from the command line, also all other images from the containing directories
  • Bugfix: Fixed handling of non-image command line arguments

pqiv 2.1

  • Support for watching directories for new files
  • Downstream Makefile fix: Included LDFLAGS (from Gentoo package, by Tim Harder), updated for clean builds on OpenBSD (by jca[at]wxcvbn[dot]org, reported by github user @clod89)
  • Also included CPPFLAGS, for completeness
  • Renamed '.qiv-select' directory to '.pqiv-select'
  • Added a certain level of autoconf compatibility to the configure script, for automated building
  • gtk 3.10 stock icon deprecation issue fixed
  • Reimplemented fading between images
  • Display the last image while the current image has not been loaded
  • Gave users the option to abort the loading of huge images
  • Respect --shuffle and --sort with --watch-directories, i.e. insert keeping order, not always at the end
  • New option --lazy-load to display the main window while still traversing paths, searching for images
  • New option --low-memory to disable memory hungry features
  • Detect nested symlinks without preventing users from loading the same image multiple times
  • Improved cross-compilation support with mingw64

pqiv 2.0

  • Complete rewrite from scratch
  • Based on GTK 3 and Cairo

pqiv ≤ 1.0

  • See the old GTK 2 release for information on that (in the gtk2 branch on github)

pqiv ≤ 0.3

  • See the old python release for information on that (in the python branch on github)

pqiv's People

Contributors

algmyr avatar astrofloyd avatar buzzingwires avatar chrysn avatar flurrywinde avatar john0312 avatar literacyfanatic avatar mmitch avatar pfactum avatar phillipberndt avatar preed avatar sloonz avatar wsldankers avatar xforever1313 avatar yindian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pqiv's Issues

Feature request, --once option

Would it be possible to add a new option, say, --once that would mean pqiv starts in slideshow mode, displays all pictures available just once and then exits? In other words, it does not wrap around.

Probably this new option would be ignored if --shuffle was supplied?

Many thanks for consideration.

Inconsistent Left Click / Spacebar operation

Whenever I left or right click to change images, it skips every other file, or at least it appears that way, I only have four files in the directory. If I hit the spacebar, it cycles through all the images as expected.

Issues with rewrite branch

Hi Phillip, thanks a lot for doing this great application! I've just tested the rewrite branch (which has been labelled "semi-stable"), and it appears I have encountered the following two issues:

  1. "--hide-info-box" is documented, but doesn't work. Variable option_hide_info_box is never used.

  2. I have several image files slightly smaller than my screen size (between 80% and 100%). I used to use "-t" twice to prevent them from being scaled. With the rewritten version, it appears neither "-t -t" nor "--disable-scaling" works as expected.

Show cursor in fullscreen

Sometimes it is needed to use mouse cursor in full-screen mode and it
Looks like there is no way in pqiv to show it. I solved this problem
By adding c' to show cursor andC' to hide it again:

Diff --git a/pqiv.c b/pqiv.c
Index bc85565..589a2a3 100644
--- a/pqiv.c
+++ b/pqiv.c
@@ -3487,6 +3487,13 @@ gboolean window_key_press_callback(GtkWidget *widget, GdkEventKey *event, gpoint
          }
          break;

+     case GDK_KEY_c:
+                       fullscreen_show_cursor();
+         break;
+     case GDK_KEY_C:
+                       fullscreen_hide_cursor();
+         break;
+
      case GDK_KEY_H:
      case GDK_KEY_h:
          {

But probably making a flag "needs to hide cursor in fullscreen",
Setting it from command line and being able to toggle it (like
Main_window_in_fullscreen) is more intuitive.

Build issue on Ubuntu+1

cc  -Wall -Wextra -Wfloat-equal -Wpointer-arith -Wcast-align -Wstrict-overflow=5 -Wwrite-strings -Waggregate-return -Wunreachable-code -Werror -Wno-unused-parameter -std=gnu99 -o pqiv `pkg-config --cflags gtk+-3.0 glib-2.0 cairo gio-2.0` pqiv.c lib/strnatcmp.o `pkg-config --libs gtk+-3.0 glib-2.0 cairo gio-2.0` -O3 
pqiv.c: In function ‘do_jump_dialog’:
pqiv.c:1601:3: error: ‘GtkStock’ is deprecated [-Werror=deprecated-declarations]
   GTK_STOCK_OK,
   ^
cc1: all warnings being treated as errors
make: *** [pqiv] Error 1

Fix bostree thread safety

When moving backwards through a file list containing lots of corrupt images, the BOSTree can become corrupt. This is due to a race between the unloading function in the image loader and the main thread.

My initial attempts to fix this in ede5ce7 and 0d803c7 did not give the desired solution.

Release 2.1

If no new bugs arise until in about 2 weeks, I should release 2.1.

Load directories in the background

Do not wait until all images are loaded, display as soon as we've got something.

This requires some changes:

  • Images must be sorted upon insertion into the search tree, not afterwards
  • current_image must be kept up-to-date
  • The argument vector must be handled in a separate thread

Watch directories for changes

This feature has been requested by numerous users. It should be quite easy to add it via gio's file system monitoring, which internally uses inotify under Linux. I'll add it in the first release after 2.0.

Some Suggestions for User-set Key Bindings

First of all, thank you for the nice image viewer. I've tried countless ones in the past, and this one is probably my favorite so far.

I think that having named actions instead of aliasing keys to other keys would be more readable. This would be especially nice for allowing for an arbitrary number of shell commands to be bound to any key (instead of using something like command-1=... with keyboard-alias=a1). It might also be nice to allow binding a key to change a specific option's value (e.g. set slideshow-interval to 0.5). To improve readability further, I think it would be nice to allow for multiple keyboard-alias options to be specified. I've changed a lot of the key bindings in the config file, and the rebinds I've made are not at all obvious from looking at a bunch of characters. Also, I'm not sure how to rebind keys like control- or space (or if it's possible).

Another feature that would be great is support sequence key bindings. As a simple example, zi could be bound to zoom in, and zo could be bound to zoom in. If this ends up being implemented, I think it would be preferable to wait for the end of a chain or for an unbound key press instead of timing out. For example, if z, zi, and zo were bound, pressing z would wait for the next key press (as opposed to eventually timing out to the action bound to z). If i or o was pressed after the z, the bound actions would happen. If a key unbound at that level was pressed, it would reset to the "top level" key bindings.

Some of these requests would require changing the keybinding syntax. If you like any of the ideas, I'd recommend something similar to the following:

bind-key=<key> <action>
# single key
bind-key=a slideshow-toggle
# key sequence
bind-key=zi zoom-in
# control + f
bind-key=c-f fullscreen-toggle
# special characters
bind-key=<space> next-image
# g followed by space followed by control + f
bind-key=g<space>c-f shell-command ...

Finally, I think it would be nice to be able to unbind a key (bind to no action)

Sort by date

Can --browse be sorted by file creation time?

Add fading between images

See title. Suggested by Martin Herrmann and others. Old versions of pqiv had this already. This time I will write the code such that fading is also possible between images of different size.

Release 2.3

With #30 closed and the bunch of new features that came with #29, I should probably do a release soon. As usual, I'll wait about a month to see if there are any bugs.

Option to Start at a Certain Image Number

I'd like to add pqiv integration to ranger (the open_all_images option). This requires the image viewer to have an option to start at a image other than the first one (e.g. --start-at 2 would show the second image initially), so that the user's place in the file manager is maintained.

scale-images-up in .pqivrc causes SEGV

If the scale-images-up=1 is in .pqivrc, it causes a SEGV fault in pqiv on my raspberry pi. I believe this is likely to happen with any option that uses the underlying CALLBACK framework in the code.

The fix for me was simple (two changes on line 590 in the current pqiv.c code)

 (*(GOptionArgFunc)(iter->arg_data))(iter->long_name, option_value, NULL, &error_pointer);
/* INSTEAD OF
** (*(GOptionArgFunc *)(iter->arg_data))(NULL, option_value, NULL, &error_pointer);
*/

Thanks for creating this utility. It's working well for what I needed it for.

Memory leak on PNG files

Look, here is example of bug. Pqiv can't open file, but it's process gets all RAM.
m1_20150520_124716

top
873,2m 269,1m  43,0  4,6   0:54.70 R pqiv

Image's not broken, it's SSTV dump made with QSSTV

Add --browse

qiv added --browse some time ago:

--browse, -B           Useful when launching from a file manager

When #24 is resolved, this option would make sense for pqiv, too.

Implementing this should be pretty straight-forward, except for the question how to prevent the image from being added twice (once from the command line, once from the directory traversal).

toggle shuffle mode

I was wondering if it would be possible to add a hotkey that allows you to toggle the shuffle mode on and off while you are viewing images.

The way I imagine it would work is as follows:

  • User starts pqiv with the --shuffle option to flip randomly through a large collection of images
  • User sees something he likes, and wants to see the next or previous image in the set rather than the next random image
  • User presses the hotkey "R" (for random) to toggle shuffle mode off, so that he can view the images that are alphabetically adjacent to the one he was viewing.

watch directories can result in still showing deleted image

The --watch-directories option work very well but I've noticed that if you delete all but one image from a source folder, pqiv in slideshow mode, will show this last image plus one other. I'm guessing there is some internal cache of images that is not being fully cleared? Many thanks for looking into it.

Webm support

Pretty much no linux image viewer supports it and I do not feel comfortable with a media player. May this happen eventually?

Slideshow with shuffle on 2 photos seems to get stuck

I've just noticed that a slideshow with 2 photos, will rotate a few times and then get stuck - not moving on to the next photo.

I've not seen this before and wonder it its due to some recent changes?

Command is:

pqiv -s -f -F -d 10.0 --fade-duration=0.8 --watch-directories --shuffle <folder containing 2 images>

I'm using 1a1b528

Many thanks for looking.

Fullscreen doesn't work with awesome wm

Under the awesome tiling window manager, full-screen mode seems to have a problem. The result is the same when I toggle it either via the wm controls or via the 'F' key: the image window has either full height but less than full width or full width but less than full height. I'm attaching a screenshot. Awesome has a floating mode as well as a tiling mode, but the mode makes no difference.

It seems the problem manifests only if the first image to appear is smaller than the screen in either dimension. For example, my screen is 1280x1024 - if 1.png is smaller than this and 2.png is equal or bigger, running:

pqiv -f 1.png 2.png

results in a full-screen window that doesn't cover the screen (even when switching between the images), while running:

pqiv -f 1.png 2.png

results in a true full-screen window which stays full-screen.

Could this be a problem at pqiv's end, or should I ask at the awesome mailing lists?

untitled

pqiv won't open

Everytime i use a command pqiv only displays the Help but dose not start. I have reinstalled it multiple times but allways get this error. If you tell me what informations you need to help me i would post them.

Does a non-recursive option make any sense?

Following on to issue #21, we decided not to reimplement the "bug" where directories passed in via stdin weren't recursive, but those on the commandline were.

Is it worth having a commandline option to disable directory recursion? It could be useful if you had a directory structure where you had foo, foo/bar, and foo/baz, but only wanted images in foo and foo/baz; you could list them, and specify the non-recursive option, and get the desired behavior.

However, this adds knobs and buttons to the app, and so I'm not sure whether it's worth it. It's nice to be able to replicate the behavior of the 1.x series, even if it was a bug.

Of course, with -r working again, I suppose you could tell people to construct a pipeline, as well, a la find foo foo/baz -type f -maxdepth1 | pqiv -r.

What are your opinions on this? I'd sign up to implement it if you think it'd be useful.

Use-after-free with multi-page PS files

How to reproduce:

  • Setup a directory with one image and one multi-page PS file
  • Start pqiv
  • Remove the PS file

Valgrind / gcc's sanitize scripts do not help, the error is an unspecific *** Error in ./pqiv: corrupted double-linked list: 0x000000000071f340 ***

About the --max-depth

pqiv is a great command line tool! When I want use it as my default Image viewer, I encounter a problem:
when I use --browse, pqiv default load all images under the image's directory, including images in subdirectories, and
when --max-depth=1, pqiv will go into 1 levels of directories below current directory. That's reasonable, but
when --max-depth=0, pqiv will load only the one image I open.
So, how could I load the images in the current directory of the image I open(not include images in subdirectories), just like a normal Image Viewer.

Wrong image order

Command line: pqiv a.jpg b.jpg c.jpg

Expected behavior:
Pqiv displays the three images in the same order as they appear in the command line.

Actual behavior:
They are displayed in the reverse order -- first c.jpg, then b.jpg, and finally a.jpg.

I use git version of pqiv.

Delayed Zoom

Zooming works fine on animated images, but when I try to zoom on a normal image, nothing happens until I take some wm action like switching desktops (after which it will redisplay with zoom). I'm using bspwm, but I haven't noticed anything like this happen for other programs. Any ideas about what might be causing this?

Window focus in 3.5.7 not correct

Certain applications are not focussed correctly when they are in maximized mode in a tag.
I noticed this problem with firefox, thunar and wireshark. It happens both in "fair" layout and in floating layout.

Steps to reproduce:
Start one of the above mentioned applications in a clean tag.
Maximize the window.
switch tags and switch back again
open some other windows
close the other windows.
try to close the maximized window.

Expected result:
all applications that are opened can be closed correctly, including the maximized one.

Actual result:
The other applications are closed, but the maximized one can not be closed.
It can also not be minimized or made fullscreen or any other action that requires a focussed window.

Let me know if you can confirm this issue.

I'm now using version 3.5.6 which does not have this problem.

Loading of big images blocks pqiv

This is not a threading related issue, but a logical error: current_image is updated before the new image is actually loaded. But keyboard and mouse input block if the current_image is not loaded.

Maybe waiting with updating current_image until the image is actually loaded will resolve this. But then I'd have to implement some mechanism to prevent the new image from popping up if the user has decided to move to another image in the meantime.

--watch-directories With Images Downloading in the Background

I've been trying having pqiv --watch-directories run for a directory under /tmp while aria2c downloads images in the background. It works okay, but I have to ensure that an image exists before starting pqiv or it will exit. Sometimes I want to clear all the images in the directory and then re-populate it with other images. This also can cause pqiv to close. Would it be possible to have pqiv stay open even in an empty directory (by default or with another option)?

Another problem is that pqiv will sometimes read an image before it is fully downloaded, causing it to fail and never be loaded. I'm not sure if there is a good way to deal with this though. I guess pqiv could retry reading failed images a few times, but for such a limited use case, it probably doesn't make sense to add that functionality. I realize that I can just pass pqiv a bunch of urls, but this is slow, and I want to be able to update/add to the images later.

Why was the -r option removed?

I use pqiv extensively and appreciate it, but I found the 2.x release (and unfortunately, the 1.x release won't compiler for me) removed the -r ("Read additional filenames (not folders) from stdin") option.

I cannot find the devlopment history between pqiv 1.0 (on the gtk2 branch) and the initial commit of the 2.x RC code, so it's hard to tell why this option was removed?

I think it'd be easy to add back (and, in fact, I'm happy to submit a pull-request that does exactly that), but I don't want to waste my time if there was an actual reason it was removed.

Release 2.2

If no new bugs arise within this week, I'll release 2.2.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.