summaryrefslogtreecommitdiff
path: root/bin/icat
blob: 702d648fb0aabffdc5b95c239d6d17c4751d3501 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/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:--}