fzf: Sync scope.sh with upstream

master
Pierre Neidhardt 2017-04-20 18:44:04 +05:30
parent f3a7a1ba0e
commit a11bcef70f
2 changed files with 91 additions and 70 deletions

View File

@ -17,18 +17,20 @@
# 4 | fix height | success. Don't reload when height changes # 4 | fix height | success. Don't reload when height changes
# 5 | fix both | success. Don't ever reload # 5 | fix both | success. Don't ever reload
# 6 | image | success. display the image $cached points to as an image preview # 6 | image | success. display the image $cached points to as an image preview
# 7 | image | success. display the file directly as an image
# Meaningful aliases for arguments: # Meaningful aliases for arguments:
path="$1" # Full path of the selected file path="$1" # Full path of the selected file
width="$2" # Width of the preview pane (number of fitting characters) width="$2" # Width of the preview pane (number of fitting characters)
height="$3" # Height 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 cached="$4" # Path that should be used to cache image previews
preview_images="$5" # "True" if image previews are enabled, "False" otherwise.
maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln
# Find out something about the file: # Find out something about the file:
mimetype=$(file --mime-type -Lb "$path") mimetype=$(file --mime-type -Lb "$path")
extension=$(/bin/echo "${path##*.}" | tr "[:upper:]" "[:lower:]") extension=$(/bin/echo "${path##*.}" | awk '{print tolower($0)}')
# Functions: # Functions:
# runs a command and saves its output into $output. Useful if you need # runs a command and saves its output into $output. Useful if you need
@ -42,76 +44,96 @@ dump() { /bin/echo "$output"; }
trim() { head -n "$maxln"; } trim() { head -n "$maxln"; }
# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success # wraps highlight to treat exit code 141 (killed by SIGPIPE) as success
highlight() { command highlight "$@"; test $? = 0 -o $? = 141; } safepipe() { "$@"; test $? = 0 -o $? = 141; }
# Image previews, if enabled in ranger.
if [ "$preview_images" = "True" ]; then
case "$mimetype" in
# Image previews for SVG files, disabled by default.
###image/svg+xml)
### convert "$path" "$cached" && exit 6 || exit 1;;
# Image previews for image files. w3mimgdisplay will be called for all
# image files (unless overriden as above), but might fail for
# unsupported types.
image/*)
exit 7;;
# Image preview for video, disabled by default.:
###video/*)
### ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;;
esac
fi
case "$extension" in case "$extension" in
# Archive extensions: # Archive extensions:
# We ignore compressed tared files as it is too slow. # We ignore compressed tared files as it is too slow.
# bz|bz2|t7z|tbz|tbz2|tgz|tlz|txz|tZ|xz|gz| # bz|bz2|t7z|tbz|tbz2|tgz|tlz|txz|tZ|xz|gz|
a|ace|alz|arc|arj|cab|cpio|deb|jar|lha|lz|lzh|lzma|lzo|\ a|ace|alz|arc|arj|cab|cpio|deb|jar|lha|lz|lzh|lzma|lzo|\
rpm|rz|tar|tzo|war|xpi|Z|zip) rpm|rz|tar|tzo|war|xpi|Z|zip)
try als "$path" && { dump | trim; exit 0; } try als "$path" && { dump | trim; exit 0; }
try acat "$path" && { dump | trim; exit 3; } try acat "$path" && { dump | trim; exit 3; }
try bsdtar -lf "$path" && { dump | trim; exit 0; } try bsdtar -lf "$path" && { dump | trim; exit 0; }
exit 1;; exit 1;;
rar) rar)
try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;; # avoid password prompt by providing empty password
try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;;
7z)
# avoid password prompt by providing empty password
try 7z -p l "$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;;
# ODT Files
odt|ods|odp|sxw)
try odt2txt "$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
# PDF documents: ## CUSTOM
pdf) mts|m2ts|mkv|ogg)
try pdftotext -l 10 -nopgbrk -q "$path" - && \ try mediainfo "$path" && { dump | sed 's/ \+:/: /;' | trim | fmt -s -w $width; exit 4; } ;;
{ dump | trim | fmt -s -w $width; exit 0; } || exit 1;; doc)
try antiword "$path" && { dump | trim | fmt -s -w $width; exit 0; }
# BitTorrent Files try catdoc "$path" && { dump | trim | fmt -s -w $width; exit 0; }
torrent) exit 1;;
try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;; docx)
try docx2txt.pl "$path" - && { dump | trim | fmt -s -w $width; exit 0; }
# HTML Pages: try catdoc "$path" && { dump | trim | fmt -s -w $width; exit 0; }
htm|html|xhtml) exit 1;;
try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } rtf)
try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } try unrtf --text "$path" && { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; } tga)
;; # fall back to highlight/cat if the text browsers fail try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;;
## CUSTOM SUPPORT
mts|m2ts|mkv|ogg)
try mediainfo "$path" && { dump | sed 's/ \+:/: /;' | trim | fmt -s -w $width; exit 4; } ;;
doc)
try antiword "$path" && { dump | trim | fmt -s -w $width; exit 0; }
try catdoc "$path" && { dump | trim | fmt -s -w $width; exit 0; }
exit 1;;
docx)
try docx2txt.pl "$path" - && { dump | trim | fmt -s -w $width; exit 0; }
try catdoc "$path" && { dump | trim | fmt -s -w $width; exit 0; }
exit 1;;
rtf)
try unrtf --text "$path" && { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
odt)
try odt2txt "$path" && { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
tga)
try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;;
esac esac
case "$mimetype" in case "$mimetype" in
# Syntax highlight for text files: # Syntax highlight for text files:
text/* | */xml) text/* | */xml)
try highlight --out-format=xterm256 -s clarity "$path" && { dump | trim; exit 5; } || exit 2;; if [ "$(tput colors)" -ge 256 ]; then
pygmentize_format=terminal256
# Ascii-previews of images: highlight_format=xterm256
image/*) else
exiftool "$path" && exit 5 pygmentize_format=terminal
# # Use sed to remove spaces so the output fits into the narrow window highlight_format=ansi
try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;; fi
try safepipe highlight --out-format=${highlight_format} "$path" && { dump | trim; exit 5; }
# Image preview for videos, disabled by default: try safepipe pygmentize -f ${pygmentize_format} "$path" && { dump | trim; exit 5; }
# video/*) exit 2;;
# ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;; # Ascii-previews of images:
# Display information about media files: image/*)
video/* | audio/*) img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;;
# Use sed to remove spaces so the output fits into the narrow window # Display information about media files:
try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } video/* | audio/*)
exiftool "$path" && exit 5 exiftool "$path" && exit 5
exit 1;; # 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 esac
exit 1 exit 1

View File

@ -4,7 +4,6 @@
SOURCEDIR="$HOME/personal" SOURCEDIR="$HOME/personal"
[ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config" [ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config"
[ -z "$XDG_DATA_HOME" ] && XDG_DATA_HOME="$HOME/.local/share" [ -z "$XDG_DATA_HOME" ] && XDG_DATA_HOME="$HOME/.local/share"
[ -z "$XDG_DATA_DIRS" ] && XDG_DATA_DIRS="/usr/local/share"
echo "==> 'temp' folder" echo "==> 'temp' folder"
mkdir -pv "$HOME/temp" mkdir -pv "$HOME/temp"