mirror of
https://git.disroot.org/FollieHiyuki/dotfiles.git
synced 2025-02-21 03:53:05 -05:00
+ vifm: improve preview scripts + lite-xl: change fonts' locations + neovim: update config for nvim-tree.lua
84 lines
2.2 KiB
Bash
Executable File
84 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
[ -d "$HOME/.cache/vifm" ] || mkdir -p ~/.cache/vifm
|
|
|
|
WIDTH="$2"
|
|
HEIGHT="$3"
|
|
TMP="$HOME/.cache/vifm/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')"
|
|
|
|
_show_sixel() {
|
|
# Stolen from vifm/vifm#419
|
|
pw=$(($2*8))
|
|
ph=$(($3*21))
|
|
|
|
w=$(exiftool -m -p '$ImageWidth' "$1")
|
|
h=$(exiftool -m -p '$ImageHeight' "$1")
|
|
|
|
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" # require libsixel
|
|
# exec montage "$1" -geometry "${pw}x${ph}" sixel:- # require ImageMagick
|
|
}
|
|
|
|
_preview_video() {
|
|
[ ! -f "${TMP}.jpg" ] && ffmpegthumbnailer -i "$1" -o "${TMP}.jpg" -s 0
|
|
_show_sixel "${TMP}.jpg" ${WIDTH} ${HEIGHT}
|
|
}
|
|
|
|
_preview_image() {
|
|
[ ! -f "${TMP}.jpg" ] && convert -- "$1"'[0]' "${TMP}.jpg"
|
|
_show_sixel "${TMP}.jpg" ${WIDTH} ${HEIGHT}
|
|
}
|
|
|
|
case "$1" in
|
|
# First check common extensions
|
|
*.png|*.jpg|*.bmp|*.jpeg|*.gif|*.xpm) _show_sixel "$1" ${WIDTH} ${HEIGHT} ;;
|
|
*.avi|*.mp4|*.wmv|*.dat|*.3gp|*.vob|*.ogv|*.mkv|*.mpe?g|*.fl[icv]|*.m2v|*.webm|*.m?ts|*.r[am]|*.qt|*.divx|*.as[fx]|*.m4v|*.mov) _preview_video "$1" ;;
|
|
# Then fallback to mimetypes
|
|
*)
|
|
mimetype=$(file --dereference --brief --mime-type -- "$1")
|
|
case "$mimetype" in
|
|
image/vnd.djvu)
|
|
djvutxt "$1" || exiftool "$1" ;;
|
|
image/*)
|
|
_preview_image "$1" ;;
|
|
application/font*|application/*opentype|font/*)
|
|
[ ! -f "${TMP}.jpg" ] && genfontimage "$1" "${TMP}.jpg"
|
|
_show_sixel "${TMP}.jpg" ${WIDTH} ${HEIGHT} ;;
|
|
video/*)
|
|
_preview_video "$1" ;;
|
|
*)
|
|
exit 1 ;;
|
|
esac ;;
|
|
esac
|