diff options
author | lvgx <l@vgx.fr> | 2020-05-22 04:48:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-22 08:18:00 +0530 |
commit | adf381acee7a341c07ecd8514f1fc526bbb1abfd (patch) | |
tree | 3bdc995c3861793ea077fe4552d8d801704ef998 /plugins | |
parent | a4909beb441aee350ff6508292f282bde5219516 (diff) | |
download | nnn-adf381acee7a341c07ecd8514f1fc526bbb1abfd.tar.gz |
Change binary file detection in preview-tui/kitty (#587)
Diffstat (limited to 'plugins')
-rwxr-xr-x | plugins/preview-kitty | 13 | ||||
-rwxr-xr-x | plugins/preview-tui | 12 |
2 files changed, 13 insertions, 12 deletions
diff --git a/plugins/preview-kitty b/plugins/preview-kitty index 4bff54d..8ebf86f 100755 --- a/plugins/preview-kitty +++ b/plugins/preview-kitty @@ -31,22 +31,23 @@ preview_file () { lines=$(($(tput lines)-1)) cols=$(tput cols) mime="$(file -b --mime-type "$1")" + encoding="$(file -b --mime-encoding "$1")" if [ -d "$1" ]; then # Print directory tree # shellcheck disable=SC2015 cd "$1" && \ COLUMNS=$cols exa -G --colour=always 2>/dev/null || ls --color=alway - elif [ "${mime%%/*}" = "text" ] ; then - # Print file head - bat --terminal-width="$cols" --paging=never --decorations=always \ - --color=always "$1" 2>/dev/null || cat elif [ "${mime%%/*}" = "image" ] ; then kitty +kitten icat --silent --transfer-mode=stream --stdin=no "$1" - else - # Binary file + elif [ "$encoding" = "binary" ] ; then + # Binary file: show file info printf -- "-------- \033[1;31mBinary file\033[0m --------\n" mediainfo "$1" 2>/dev/null || file -b "$1" + else + # Text file: print colored file content + bat --terminal-width="$cols" --paging=never --decorations=always \ + --color=always "$1" 2>/dev/null || cat fi | head -n $lines } diff --git a/plugins/preview-tui b/plugins/preview-tui index 3ebf195..5e1fd67 100755 --- a/plugins/preview-tui +++ b/plugins/preview-tui @@ -27,18 +27,18 @@ preview_file () { clear lines=$(($(tput lines)-1)) cols=$(tput cols) - mime="$(file -b --mime-type "$1")" + encoding="$(file -b --mime-encoding "$1")" if [ -d "$1" ]; then # Print directory tree cd "$1" && tree | head -n $lines | cut -c 1-"$cols" - elif [ "${mime%%/*}" = "text" ] ; then - # Print file head - head -n $lines "$1" | cut -c 1-"$cols" - else - # Binary file + elif [ "$encoding" = "binary" ] ; then + # Binary file: just print filetype info echo "-------- Binary file --------" file -b "$1" + else + # Text file: print file head + head -n $lines "$1" | cut -c 1-"$cols" fi } |