From 842b92de6de0719354f3eefc1557d1edd9be7575 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 2 Mar 2018 20:25:31 -0300 Subject: Adds default scope.sh --- config.dot/ranger/rc.conf.link | 9 ++++- config.dot/ranger/scope.sh.link | 89 +++++++++++++++++++++++++++++++++++++++++ dependencies/debian | 5 +++ 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100755 config.dot/ranger/scope.sh.link create mode 100644 dependencies/debian diff --git a/config.dot/ranger/rc.conf.link b/config.dot/ranger/rc.conf.link index b55ea90..b2a218b 100644 --- a/config.dot/ranger/rc.conf.link +++ b/config.dot/ranger/rc.conf.link @@ -1,8 +1,15 @@ +# Ranger configuration +# See also https://wiki.archlinux.org/index.php/Ranger + # Colorscheme set colorscheme solarized +# Previews # See https://github.com/ranger/ranger/wiki/Image-Previews +# https://github.com/ranger/ranger/wiki/Video-Previews +set preview_files true set preview_images true +set use_preview_script true #set preview_images_method urxvt #set preview_images_method mpv -#set preview_script /etc/ranger/data/scope.sh +set preview_script ~/.config/ranger/scope.sh diff --git a/config.dot/ranger/scope.sh.link b/config.dot/ranger/scope.sh.link new file mode 100755 index 0000000..57aaa1d --- /dev/null +++ b/config.dot/ranger/scope.sh.link @@ -0,0 +1,89 @@ +#!/usr/bin/env sh +# ranger supports enhanced previews. If the option "use_preview_script" +# is set to True and this file exists, this script will be called and its +# output is displayed in ranger. ANSI color codes are supported. + +# NOTES: This script is considered a configuration file. If you upgrade +# ranger, it will be left untouched. (You must update it yourself.) +# Also, ranger disables STDIN here, so interactive scripts won't work properly + +# Meanings of exit codes: +# code | meaning | action of ranger +# -----+------------+------------------------------------------- +# 0 | success | success. display stdout as preview +# 1 | no preview | failure. display no preview at all +# 2 | plain text | display the plain content of the file +# 3 | fix width | success. Don't reload when width changes +# 4 | fix height | success. Don't reload when height changes +# 5 | fix both | success. Don't ever reload +# 6 | image | success. display the image $cached points to as an image preview + +# Meaningful aliases for arguments: +path="$1" # Full path of the selected file +width="$2" # Width of the preview pane (number of fitting characters) +height="$3" # Height of the preview pane (number of fitting characters) +cached="$4" # Path that should be used to cache image previews + +maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln + +# Find out something about the file: +mimetype=$(file --mime-type -Lb "$path") +extension=$(/bin/echo -E "${path##*.}" | tr "[:upper:]" "[:lower:]") + +# Functions: +# runs a command and saves its output into $output. Useful if you need +# the return value AND want to use the output in a pipe +try() { output=$(eval '"$@"'); } + +# writes the output of the previously used "try" command +dump() { /bin/echo -E "$output"; } + +# a common post-processing function used after most commands +trim() { head -n "$maxln"; } + +# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success +highlight() { command highlight "$@"; test $? = 0 -o $? = 141; } + +case "$extension" in + # Archive extensions: + 7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\ + rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip) + try als "$path" && { dump | trim; exit 0; } + try acat "$path" && { dump | trim; exit 3; } + try bsdtar -lf "$path" && { dump | trim; exit 0; } + exit 1;; + rar) + try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;; + # PDF documents: + pdf) + try pdftotext -l 10 -nopgbrk -q "$path" - && \ + { dump | trim | fmt -s -w $width; exit 0; } || exit 1;; + # BitTorrent Files + torrent) + try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;; + # HTML Pages: + htm|html|xhtml) + try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } + try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } + try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } + ;; # fall back to highlight/cat if the text browsers fail +esac + +case "$mimetype" in + # Syntax highlight for text files: + text/* | */xml) + try highlight --out-format=ansi "$path" && { dump | trim; exit 5; } || exit 2;; + # Ascii-previews of images: + image/*) + img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;; + # Image preview for videos, disabled by default: + #video/*) + # ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;; + # Display information about media files: + video/* | audio/*) + exiftool "$path" && exit 5 + # Use sed to remove spaces so the output fits into the narrow window + try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;; +esac + +exit 1 diff --git a/dependencies/debian b/dependencies/debian new file mode 100644 index 0000000..eb30bfb --- /dev/null +++ b/dependencies/debian @@ -0,0 +1,5 @@ +# +# Basic dependencies +# +ranger +ffmpegthumbnailer -- cgit v1.2.3