diff options
Diffstat (limited to '.config/vifm/scripts/vifm-show-sixel')
| -rwxr-xr-x | .config/vifm/scripts/vifm-show-sixel | 45 |
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" |