#!/bin/dash # nsxiv pipe # # tmpfile="${TMPDIR:-/tmp}/nsxiv_pipe_$$" # trap 'rm -f -- $tmpfile' EXIT # # if [ "$#" -eq 0 ]; then # if [ -t 0 ]; then # echo "nsxiv-pipe: No arguments provided" >&2; exit 1 # else # # Consume stdin and put it in the temporal file # cat > "$tmpfile" # fi # fi # # for arg in "$@"; do # # if it's a pipe then drain it to $tmpfile # [ -p "$arg" ] && cat "$arg" > "$tmpfile" # done # # if [ -s "$tmpfile" ]; then # nsxiv -q "$@" "$tmpfile" # -q to silence warnings # else # nsxiv "$@" # fallback # fi # nsxiv rifle # # 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" -maxdepth 1 -type f -print | # is_img_extension | sort | tee "$tmp" # } # # open_img() { # file="$1"; shift; # # only go through listfiles() if the file has a valid img extension # if echo "$file" | is_img_extension >/dev/null 2>&1; then # trap 'rm -f $tmp' EXIT # count="$(listfiles "///${file%/*}" | grep -nF "$file")" # fi # if [ -n "$count" ]; then # nsxiv -i -n "${count%%:*}" "$@" -- < "$tmp" # else # # fallback incase file didn't have a valid extension, or we couldn't # # find it inside the list # nsxiv "$@" -- "$file" # fi # } # # uri2path() { # python3 - "$@" <<'___HEREDOC' # from urllib.parse import unquote, urlparse # from sys import argv # for arg in argv[1:]: # print(unquote(urlparse(arg).path)) # ___HEREDOC # } # # [ "$1" = '--' ] && shift # case "$1" in # "") echo "Usage: ${0##*/} PICTURES" >&2; exit 1 ;; # /*) open_img "$1" ;; # "~"/*) open_img "$HOME/${1#"~"/}" ;; # file:///*) open_img "$(uri2path "$1")" ;; # trash:///*) # trash_dir="${XDG_DATA_HOME:-$HOME/.local/share}/Trash/files" # open_img "${trash_dir}$(uri2path "$1")" -N "nsxiv_trash" # ;; # *) open_img "$PWD/$1" ;; # esac # nsxiv url # cache_dir="${TMPDIR:-/tmp}/nsxiv" # # die() { # [ -n "$1" ] && printf '%s\n' "$*" >&2; # exit 1 # } # # cleanup() { # rm -f -- "$cache_dir"/* # } # # get_image() ( # cd "$cache_dir" && curl -sSLO "$1" # ) # # ### main ### # # [ -z "$1" ] && die "No arguments given" # trap cleanup EXIT # [ -d "$cache_dir" ] || mkdir -p -- "$cache_dir" || die # while [ -n "$1" ]; do # case "$1" in # *://*.*) get_image "$1" ;; # *) echo "Invalid url: $1" >&2 ;; # esac # shift # done # # [ "$(find "$cache_dir" -type f -print | wc -l)" -ne 0 ] && # nsxiv -p "$cache_dir" nsxiv