summaryrefslogtreecommitdiff
path: root/bin/icat
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2020-11-01 09:32:20 +0100
committerMarc Vertes <mvertes@free.fr>2020-11-01 09:32:20 +0100
commitd6f32d35d3233f5dfbb0ed3fd2770dc7c9d0aa91 (patch)
treefc53a2315d2ebfaf3648f4708805d8336a33ba42 /bin/icat
parent846f6c5d88f647907c47f939432729593e844ee3 (diff)
update
Diffstat (limited to 'bin/icat')
-rwxr-xr-xbin/icat30
1 files changed, 28 insertions, 2 deletions
diff --git a/bin/icat b/bin/icat
index b15a6d4..702d648 100755
--- a/bin/icat
+++ b/bin/icat
@@ -1,2 +1,28 @@
-#!/bin/sh
-exec convert -resize '800x480>' -flatten -- ${1:--} sixel:-
+#!/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:--}