#!/bin/sh # # Display an image with conversion as necessary # CMD=$(basename $0) MAGIC=/usr/share/misc/magic-mm SHOWTIME=20 SLEEPTIME=2 usage() { echo "usage: $CMD [-s] file" >&2 exit 1 } while getopts ":s" c do case "$c" in s) slide=1;; :|'?') usage;; esac done shift $(($OPTIND - 1)) [ $# -lt 1 ] && usage file=$1 case "$1" in *.[Pp][Nn][Gg]) done=1;; *.[Jj][Bb][Gg]) done=1;; *.[Jj][Ll][Ss]) pnmcmd=djls; done=1;; *.[Bb][Zz]2) pnmcmd=bzcat; done=1;; esac if [ -z "$done" ]; then ts="$(file -m $MAGIC "$1")"; t="${ts#*: }" case "$t" in GIMP\ XCF\ image\ data*) exec gimp "$file";; Netpbm\ PBM* | Netpbm\ PGM* | Netpbm\ PPM* | GIF\ image\ data* | \ JPEG\ image\ data* | TIFF\ image\ data*) ;; IFF\ data,\ ILBM*) pnmcmd=ilbmtoppm;; PC\ bitmap\ data*) pnmcmd=bmptopnm;; Targa\ image\ data*) pnmcmd=tgatoppm;; Sun\ raster\ image\ data*) pnmcmd=rasttopnm;; Kodak\ Photo\ CD\ image\ pack\ file*) pnmcmd="hpcdtoppm -3";; JPEG\ 2000\ image\ data) pnmcmd=djp2;; JPEG\ 2000\ image\ data,\ extended\ format) pnmcmd=djpf;; *) case "$1" in *.[Pp][Cc][Xx] | *.[Pp][Cc][Cc] | *.[Xx][Bb][Mm]) ;; *.[Mm][Aa][Cc]) pnmcmd=macptopbm;; *.[Pp][Ii]1) pnmcmd=/usr/local/netpbm/bin/pi1toppm;; *.[Pp][Ii]3) pnmcmd=pi3topbm;; *.[Xx][Bb][Mm]) pnmcmd=xbmtopbm;; *.[Xx][Pp][Mm]) pnmcmd=xpmtoppm;; *) exit 1;; esac;; esac fi exec 2>/dev/null if [ -n "$slide" ]; then echo "$CMD: Displaying \"$1\"" if [ -n "$pnmcmd" ]; then $pnmcmd | iv >/dev/null 2>&1 & else iv "$file" >/dev/null 2>&1 & fi sleep $SLEEPTIME xset s reset sleep $SHOWTIME xset s activate kill $! else if [ -n "$pnmcmd" ]; then exec $pnmcmd "$file" | iv >/dev/null 2>&1 else exec iv "$file" >/dev/null 2>&1 fi fi .