Post by Henrik Carlqvist
I really like xv myself, I use it almost every week to display some image
file or to take a screen shot. There are other application which I could
also use for this like gimp, but xv is quick to start. There are also
lightweight applications like display, but display lacks many features
that xv has. I have been using xv since I started with Slackware 3.0 and
before that I was using xv on Solaris. If xv was removed from Slackware I
would really miss it.
Have you tried feh? I don't think it was part of the standard install,
but instead something I added from slackbuilds, but feh has been my
favorite go-to image display tool for a long time. It doesn't do
screenshots, but I script xwd for that. (Eg, I have one script bound to
an ACPI key for whole screen capture, and a shell script that I use for
browser captures which does pipe-line editing for privacy reasons:
remove the bookmark bar and fill in the search box with a blank
Some features of feh I love and use regularly:
* browse a collection of images, scaling down any too big for the screen
"feh -T fehonce"
fehonce --cycle-once --scale-down
* generation of thumbnail index images "feh -T mkindex *.jpg"
mkindex -iVO index.png
* sorting images into subdirectories "feh -T imgsort *"
uses "fehcopy" shell script (below)
~/.config/feh/themes entry (as one line):
imgsort --cycle-once --scale-down
--action1 "fehcopy -d /var/tmp/sort1 %f"
--action2 "fehcopy -d /var/tmp/sort2 %f"
--action9 "fehcopy -d /var/tmp/sort9 %f"
All of the "themes" work automatically if you call feh by their names,
eg with theme name as a symlink to feh.
Things I use less regularly:
* display and refresh every 5 minutes an election returns image
feh --reload 300 Loading Image...
* display a bunch of small images all at once (borderless, multiwindow)
feh -x -w icons/*
* preview frames of a video before making a gif or whatever (10 FPS,
or 0.1 seconde delay between frames, this is a feature I requested
somewhere around 15 years ago)
feh -D 0.1 frames/*
* display textual info about images without displaying them
feh -l /tmp/*.gif
* display an image index where images are clickable to view full size
feh -t /mnt/dcim/20151020/*
* display images named in a file (warning: feh will rewrite the file
to remove images that can't be displayed)
feh -f list.txt
I find the keybindings of feh intuitive, but I fully admit that could
just be me. <space> next image, <p> previous image, <q> quit now, <x>
close current window, <enter> run -A action, <0> ... <9> run the
--actionN action, <home> first image, <end> last image, <delete> remove
current image from list (will rewrite a -f filelist).
my fehcopy shell script:
# from man feh:
# -A, --action ACTION
# Specify a string as an action to perform on the image.
# slideshow or multiwindow modes, the action will be run when
# enter key is pressed, in list mode, the action will be run
# each file listed. The action will be executed by /bin/sh. Use
# mat specifiers to refer to image info. See FORMAT SPECIFIERS
# Eg. feh -A "mv %f ~/images/%n" *
# Extra actions which can be set and triggered using the
# number key.
# Make a feh theme, put in fehrc:
# pickuploads -A "fehcopy -d /var/tmp/upload %f"
# Then use with "feh -T pickuploads" or "ln -s `which feh`
# Make a complex feh theme, put in fehrc (all on one line):
# imgsort --action1 "fehcopy -d /var/tmp/sort1 %f"
# --action2 "fehcopy -d /var/tmp/sort2 %f"
# --action3 "fehcopy -d /var/tmp/sort3 %f"
# --action4 "fehcopy -d /var/tmp/sort4 %f"
# --action5 "fehcopy -d /var/tmp/sort5 %f"
# --action6 "fehcopy -d /var/tmp/sort6 %f"
# --action7 "fehcopy -d /var/tmp/sort7 %f"
# --action8 "fehcopy -d /var/tmp/sort8 %f"
# --action9 "fehcopy -d /var/tmp/sort9 %f"
# 30 March 2011
# these booleans are "empty" is false, "not-empty" is true
while [ $vars = 1 ] ; do
case "X$1" in
X-d) shift; outdir="$1"; shift ;;
X-q) shift; quiet=1 ;;
X-o) shift; overwrite=1 ;;
X-h|X--help) echo "$0: usage:"
echo " fehcopy [ OPTIONS ] file"
echo " -d DIR copy to directory DIR"
echo " (default is $outdir)"
echo " -o overwrite any existing file"
echo " (default is uniquely name files)"
echo " -q quiet operation"
echo " Use as action to feh, eg:"
echo " feh -A 'fehcopy $f'"
echo "In feh <enter> will trigger action."
X-*) echo "$0: unknown option: $1"
exit 1 ;;
X?*) vars=0 ;;
X) echo "$0: no file specified!"
exit 1 ;;
mkdir -p "$outdir"
if [ X"$overwrite" = X ] ; then
# there is a race condition here, but I don't think it is likely
# to every be encountered
while [ -f "$outdir/$uniq$basein" ] ; do
if [ "X$uniq" = X ] ; then
n=$(( $n + 1 ))
if [ X"$quiet" = X ] ; then
echo cp "$infile" "$outdir/$uniq$basein"
cp "$infile" "$outdir/$uniq$basein"