jexer/examples/imgls

65 lines
1.3 KiB
Text
Raw Normal View History

2019-11-02 18:58:10 -06:00
#!/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;
# <sequence> ST, and for all ESCs in <sequence> 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