summaryrefslogtreecommitdiff
path: root/iv
blob: 11ed1077aece6e0cbd065fa57c8527cc026c2637 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env bash

TMPDIR="${TMPDIR:-/tmp}"
tmp="$TMPDIR/nsxiv_rifle_$$"

is_img_extension () {
    grep -iE '\.(jpe?g|png|gif|svg|webp|tiff|heif|avif|ico|bmp)$'
}

listfiles () {
    find -L "${1%/*}" \( ! -path "${1%/*}" -prune \) -type f -print |
      is_img_extension | sort | tee "$tmp"
}

open_img () {
    # Only go through listfiles() if the file has a valid img extension
    if echo "$1" | is_img_extension >/dev/null 2>&1; then
        trap 'rm -f $tmp' EXIT
        count="$(listfiles "$1" | grep -nF "$1")"
    fi
    if [ -n "$count" ]; then
        nsxiv -o -i -a -n "${count%%:*}" -- < "$tmp"
    else
        # Fallback in case the file didn't have a valid extension, or we
        # couldn't find it inside the list
        nsxiv -- "$@"
    fi
}

[ "$1" = '--' ] && shift
case "$1" in
    "") echo "Usage: ${0##*/} PICTURES" >&2; exit 1 ;;
    /*) open_img "$1" ;;
    "~"/*) open_img "$HOME/${1#"~"/}" ;;
    *) open_img "$PWD/$1" ;;
esac