mirror of
https://gitlab.com/AutumnMeowMeow/jexer
synced 2024-09-19 11:50:19 -06:00
65 lines
1.3 KiB
Text
65 lines
1.3 KiB
Text
|
#!/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
|
||
|
|