dotfiles.git

commit ce0e307ee9dfb168c257139589ac364a506128c7

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() {