#!/bin/bash # This is a modified version of the 'imgls' from iTerm2 located at # https://iterm2.com/utilities/imgls, modified to emit images with the # Jexer image protocol. # tmux requires unrecognized OSC sequences to be wrapped with DCS tmux; # ST, and for all ESCs in to be replaced with ESC ESC. It # only accepts ESC backslash for ST. function print_osc() { if [ x"$TERM" = "xscreen" ] ; then printf "\033Ptmux;\033\033]" else printf "\033]" fi } function check_dependency() { if ! (builtin command -V "$1" > /dev/null 2>& 1); then echo "imgcat: missing dependency: can't find $1" 1>& 2 exit 1 fi } # More of the tmux workaround described above. function print_st() { if [ x"$TERM" = "xscreen" ] ; then printf "\a\033\\" else printf "\a" fi } function list_file() { fn=$1 test -f "$fn" || return 0 if [ "${fn: -4}" == ".png" ]; then print_osc printf '444;1;1;' base64 < "$fn" print_st elif [ "${fn: -4}" == ".jpg" ]; then print_osc printf '444;2;1;' base64 < "$fn" print_st fi } check_dependency base64 if [ $# -eq 0 ]; then for fn in * do list_file "$fn" done < <(ls -ls) else for fn in "$@" do list_file "$fn" done fi