Author: Adam Evyčędo <git@apiote.xyz>
lf previewers
.config/lf/lfrc | 3 ++- .config/lf/previewer.sh | 2 +- .config/sh/functions | 29 ++++++++++++++++++++++++++---
diff --git a/.config/lf/lfrc b/.config/lf/lfrc index 9c5ff0385012853fd26ee68580e3d00506040642..9713894364d59b541985c417c94240be3bebceef 100644 --- a/.config/lf/lfrc +++ b/.config/lf/lfrc @@ -7,6 +7,7 @@ set ifs "\n" set scrolloff 10 set icons set previewer ~/.config/lf/previewer.sh +set sixel map x $$f map X !$f @@ -31,7 +32,7 @@ set -f case $f in *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xzvf $f;; *.tar.gz|*.tgz) tar xzvf $f;; - *.tar.xz|*.txz) /usr/bin/tar xavf $f;; + *.tar.xz|*.txz) tar xavf $f;; *.zip) unzip $f;; *.rar) unrar x $f;; *.7z) 7z x $f;; diff --git a/.config/lf/previewer.sh b/.config/lf/previewer.sh index ed23507161ed2a17260847d2df982eb55122a5ea..ecc5c8d898112b7922cb767c0ed93015f3ac1b2c 100755 --- a/.config/lf/previewer.sh +++ b/.config/lf/previewer.sh @@ -3,4 +3,4 @@ . ~/.config/sh/variables . ~/.config/sh/functions -preview "$1" +preview "$@" diff --git a/.config/sh/functions b/.config/sh/functions index 6e9b4ec5c898d4fc688aa8efe7bfdeaa0de4d0ee..af70e9bda664e639db3b951a4d7956b450f89372 100644 --- a/.config/sh/functions +++ b/.config/sh/functions @@ -735,6 +735,7 @@ video/*) setsid fun mpv "$1" >/dev/null 2>&1 & ;; audio/*) setsid fun mpa "$1" >/dev/null 2>&1 & ;; application/json) bat -f "$1" ;; application/javascript) bat -f "$1" ;; + application/x-subrip) bat -f "$1" ;; application/pdf) setsid zathura "$1" >/dev/null 2>&1 & ;; application/epub+zip) setsid zathura "$1" >/dev/null 2>&1 & ;; application/zip) unzip -l "$1" ;; @@ -754,13 +755,33 @@ preview() { mime=$(file -i "$1" | rev | cut -d ':' -f1 | rev | cut -d ';' -f1 | tr -d ' ') charset=$(file -i "$1" | rev | cut -d ':' -f1 | rev | cut -d ';' -f2 | tr -d ' ') - # TODO images, maybe stills from videos, pdfs case $mime in text/*) view "$1" ;; - image/*|video/*|audio/*) ffprobe "$1" 2>&1;; + image/*) + chafa -f sixel -s "$2x$3" --animate false "$1" + exit 1 + ;; + video/*) + mkdir -p "$HOME/.cache/thumbnails" + chksum=$(meowsum "$1" | cut -d ' ' -f 1) + if [ ! -f "$HOME/.cache/thumbnails/$chksum.png" ]; then + ffmpegthumbnailer -i "$1" -s 0 -o "$HOME/.cache/thumbnails/$chksum.png" + fi + chafa -f sixel -s "$2x$3" --animate false "$HOME/.cache/thumbnails/$chksum.png" + exit 1 + ;; + audio/*) ffprobe "$1" 2>&1;; application/json) view "$1" ;; application/javascript) view "$1" ;; - application/pdf) bat "$1" ;; + application/pdf) + mkdir -p "$HOME/.cache/thumbnails" + chksum=$(meowsum "$1" | cut -d ' ' -f 1) + if [ ! -f "$HOME/.cache/thumbnails/$chksum.png" ]; then + convert -density 150 -trim "$1[0]" -quality 100 -flatten -sharpen 0x1.0 "$HOME/.cache/thumbnails/$chksum.png" + fi + chafa -f sixel -s "$2x$3" --animate false "$HOME/.cache/thumbnails/$chksum.png" + exit 1 + ;; application/epub+zip) unzip -l "$1" ;; application/zip) view "$1" ;; application/pgp-keys) view "$1" ;; @@ -1082,6 +1103,8 @@ *.spx=:\ *.xspf=:\ *.pdf=:\ *.nix=:" lf + + find ~/.cache/thumbnails/ -atime +7 -exec rm {} \; } update_git() {