When comparing GPicView vs sxiv, the Slant community recommends sxiv for most people. In the question“What are the best FOSS image viewers for UNIX-like systems?” sxiv is ranked 10th while GPicView is ranked 13th. The most important reason people chose sxiv is:
Anti-aliasing is usually enabled on startup and can be toggled with 'a'. Disabling anti-aliasing means faster operation due to less CPU load. Changing the default is possible by compiling with this setting: # config.h static const bool ANTI_ALIAS = false;
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Multiple windows
When opening multiple images at once it opens every single picture in a separate window.
Pro Functional
It has all the necessary functions that you can reasonably expect from a lightweight image viewer: you can view all the image files in a directory, rotate and save them.
Pro Customizable
Pro Extremely lightweight
And still you can browse all images in a directory.
Pro Anti-aliasing can be toggled
Anti-aliasing is usually enabled on startup and can be toggled with 'a'.
Disabling anti-aliasing means faster operation due to less CPU load.
Changing the default is possible by compiling with this setting:
# config.h
static const bool ANTI_ALIAS = false;
Pro Supports embedding into other X windows
Via option -e.
Pro Basic support for multi-frame images (aka animations)
Load all frames from GIF files and play GIF animations.
Pro Acts as a filter for images that interacts with the command line
Option -i (input) takes filenames from stdinput and outputs marked images to stdoutput via option -o (output).
Pro Userscripts can be applied to single images or thumbnail mode selection
Examples of how to use the key-handler are found here:
/usr/share/sxiv/exec/key-handler
Pro Image infobox can be configured
Can be configured in ~/.config/sxiv/exec/image-info. See also here.
Pro Rudimentary viewing manipulation
Images can be rotated (<,>), flipped (|,_) and scaled (w,W,e,E,=).
Pro View mode with marked files
Keys 'N' and 'P' move in list of marked files. This can be useful.
Pro Thumbnail mode
Pro Fast
Cons
Con Browsing a directory after opening a single file needs fixing
See here
There is a workaround implemented in ranger that works more or less out of the box
# This hook allows image viewers to open all images in the current
# directory, keeping the order of files the same as in ranger.
# The requirements to use it are:
# 1. set open_all_images to true
# 2. ensure no files are marked
# 3. call rifle with a command that starts with "sxiv " or "feh "
def sxiv_workaround_hook(command):
Con Jumping in thumbnail mode possible, but limited
By entering a number, followed by capital G the focus jumps to that image in the list counted from beginning. (G is default key for 'g_n_or_last'-action (see config.h in source).)
It has to be noted that prefixing a motion with a number also works as espected (vim style).
Alas, a jumping mode with lables (like with pqiv) would be an advantage.
Con It doesn't have pong
Con Thumbnail mode only with simple marking
Key 'm' marks files.
Con Keys not configurable except via keyhandler mode or compilation
Keys can be associated with userscripts, which can be defined in ~/.config/sxiv/exec/key-handler. Every associated button needs to be prefixed with the key combination C-x (although that prefix can be configured to another key or key combination in config.h).
It has to be noted that key configuration apart from the key-handler is possible via compilation (Customizable key and mouse button mappings in config.h), which must not be a bad way to configure buttons, but certainly means a barrier for the not so tech-savvy.
Easy instruction for compilation:
1) Enter in terminal: "git clone https://github.com/muennich/sxiv.git"
2) Edit file "config.h" according to this
3) Compile and install, namely enter directory and enter in terminal: "make && sudo make install" (beware of sudo/root unless you know what you do)
( 4) Iterate: 2), then: enter directory and enter in terminal: "make clean && make && sudo make install" )
See an example for remapping the navigation buttons:
// navigate thumbnail+image
{ 0, XK_Left, i_navigate, -1 },
{ 0, XK_Left, t_move_sel, DIR_LEFT },
{ 0, XK_Right, i_navigate, +1 },
{ 0, XK_Right, t_move_sel, DIR_RIGHT },
{ 0, XK_Down, t_move_sel, DIR_DOWN },
{ 0, XK_Up, t_move_sel, DIR_UP },
{ ShiftMask, XK_Right, i_navigate, +10 },
{ ShiftMask, XK_Left, i_navigate, -10 },