48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
MIME=$(mimetype --all --brief "$1")
 | 
						|
#echo "$MIME"
 | 
						|
 | 
						|
case "$MIME" in
 | 
						|
    # .pdf
 | 
						|
    *application/pdf*)
 | 
						|
        pdftotext "$1" -
 | 
						|
        ;;
 | 
						|
    # .jpeg, png etc.
 | 
						|
    *image/*)
 | 
						|
        chafa -f sixel -s "$2x$3" "$1"
 | 
						|
        ;;
 | 
						|
    # .7z
 | 
						|
    *application/x-7z-compressed*)
 | 
						|
        7z l "$1"
 | 
						|
        ;;
 | 
						|
    # .tar .tar.Z
 | 
						|
    *application/x-tar*)
 | 
						|
        tar -tvf "$1"
 | 
						|
        ;;
 | 
						|
    # .tar.*
 | 
						|
    *application/x-compressed-tar*|*application/x-*-compressed-tar*)
 | 
						|
        tar -tvf "$1"
 | 
						|
        ;;
 | 
						|
    # .rar
 | 
						|
    *application/vnd.rar*)
 | 
						|
        unrar l "$1"
 | 
						|
        ;;
 | 
						|
    # .zip
 | 
						|
    *application/zip*)
 | 
						|
        unzip -l "$1"
 | 
						|
        ;;
 | 
						|
    *text/markdown*)
 | 
						|
        pandoc $1 > /tmp/lf_preview.html && cutycapt --url=file:///tmp/lf_preview.html --out=/tmp/lf_preview.png && chafa -s "$2x$3" -f sixel /tmp/lf_preview.png
 | 
						|
	;;
 | 
						|
    # any plain text file that doesn't have a specific handler
 | 
						|
    *text/plain*)
 | 
						|
        # return false to always repaint, in case terminal size changes
 | 
						|
        batcat --force-colorization --paging=never --style=changes,numbers \
 | 
						|
            --terminal-width $(($2 - 3)) "$1" && false
 | 
						|
        ;;
 | 
						|
    *)
 | 
						|
        echo "unknown format"
 | 
						|
        ;;
 | 
						|
esac
 |