summary refs log tree commit diff
path: root/.config/vifm/scripts/vifm-show-sixel
diff options
context:
space:
mode:
Diffstat (limited to '.config/vifm/scripts/vifm-show-sixel')
-rwxr-xr-x.config/vifm/scripts/vifm-show-sixel45
1 files changed, 45 insertions, 0 deletions
diff --git a/.config/vifm/scripts/vifm-show-sixel b/.config/vifm/scripts/vifm-show-sixel
new file mode 100755
index 0000000..1644153
--- /dev/null
+++ b/.config/vifm/scripts/vifm-show-sixel
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+set -e
+
+if [ "$#" -ne 3 ]; then
+    echo "Usage: $0 filename width height"
+    exit 1
+fi
+
+dim=( $(convert "$1" -format "%w %h" info:) )
+w=${dim[0]}
+h=${dim[1]}
+
+pw=$(($2*8))
+ph=$(($3*14))
+
+height=auto
+width=auto
+if [ $pw -lt $w ] && [ $ph -lt $h ]; then
+    newh=$(echo "($h*$pw)/$w" | bc)
+    neww=$(echo "($w*$ph)/$h" | bc)
+
+    if [ $newh -le $ph ]; then
+        width=$pw
+    else
+        height=$ph
+    fi
+elif [ $pw -lt $w ]; then
+    width=$pw
+elif [ $ph -lt $h ]; then
+    height=$ph
+fi
+
+# debugging stuff
+# echo pw=$pw ph=$ph
+# echo w=$w h=$h
+# echo neww=$neww newh=$newh
+# exec echo width=$width height=$height
+
+# account for GNU screen
+if [ -n "$STY" ]; then
+    popt=-P
+fi
+
+exec img2sixel $popt --width=$width --height=$height "$1"