diff options
Diffstat (limited to 'dotfiles/.local/bin')
| -rwxr-xr-x | dotfiles/.local/bin/scope | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/dotfiles/.local/bin/scope b/dotfiles/.local/bin/scope new file mode 100755 index 0000000..3f19948 --- /dev/null +++ b/dotfiles/.local/bin/scope @@ -0,0 +1,60 @@ +#!/bin/bash + +set -C -f -u +#IFS=$'\n' +IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" + +# ANSI color codes are supported. +# STDIN is disabled, so interactive scripts won't work properly + +# This script is considered a configuration file and must be updated manually. + +# Meanings of exit codes: +# code | meaning    | action of ranger +# -----+------------+------------------------------------------- +# 0    | success    | Display stdout as preview +# 1    | no preview | Display no preview at all +# 2    | plain text | Display the plain content of the file + +# Script arguments +FILE_PATH="${1}"         # Full path of the highlighted file +#HEIGHT="${2}" + +#FILE_EXTENSION="${FILE_PATH##*.}" +#FILE_EXTENSION_LOWER=$(echo ${FILE_EXTENSION} | tr '[:upper:]' '[:lower:]') + +# Settings +HIGHLIGHT_SIZE_MAX=262143  # 256KiB +HIGHLIGHT_TABWIDTH=8 +HIGHLIGHT_STYLE='pablo' + + +handle_mime() { +    local mimetype="${1}" +    case "${mimetype}" in +	text/html) w3m -dump "${FILE_PATH}" ;; +	text/troff) man ./ "${FILE_PATH}" | col -b ;; +	text/* | */xml) +            if [ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]; then +                exit 2 +            fi +            if [ "$( tput colors )" -ge 256 ]; then +                local highlight_format='xterm256' +            else +                local highlight_format='ansi' +            fi +            highlight --replace-tabs="${HIGHLIGHT_TABWIDTH}" --out-format="${highlight_format}" \ +                --style="${HIGHLIGHT_STYLE}" --force -- "${FILE_PATH}" ;; +	application/zip) unzip -l -- "${FILE_PATH}" ;; +	application/gzip) tar -ztf "${FILE_PATH}" ;; +	application/x-rar) unrar lb -- "${FILE_PATH}" ;; +    video/* | audio/*|application/octet-stream | image/*) mediainfo "${FILE_PATH}" | awk -F':' '{ print $2 }' || exit 1;; +    */pdf) pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - ;; +    *opendocument*) odt2txt "${FILE_PATH}" ;; +    *) file -b "${FILE_PATH}" ;; +    esac +} + +MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )" +handle_mime "${MIMETYPE}" +exit 1 | 
