#!/bin/sh -e # Display images directly in terminal. # Tested with xterm v361 # maxsize prints the geomtry size of terminal window, with # a maximum value of 1000 pixels for width and height, or # 640x480 if size can not be probed. maxsize() { [ "$WINDOWID" ] || { echo "640x480>"; return; } xwininfo -id "$WINDOWID" | { w=1000 h=1000 while read -r a b; do case $a in (Width:) [ $((b < w)) = 1 ] && w=$b ;; (Height:) [ $((b < h)) = 1 ] && h=$b ;; esac done echo "${w}x$h" } } # Use convert(1) from imagemagick to output sixel format. # -flatten uses the terminal background color as transparent layer # -resize use the terminal size as bounding box, with a limit of 1000 pixels # image is not resized if smaller than limit #exec convert -resize "$(maxsize)>" -transparent-color white -flatten -- ${1:--} sixel:- # color #rrrrggggbbbb exec convert -resize "$(maxsize)>" -- ${1:--} sixel:${2:--}