|
|
|
#!/usr/bin/env bash
|
What
the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little "clever" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo.
5 years ago
|
|
|
|
|
|
|
set -o noclobber -o noglob -o nounset -o pipefail
|
|
|
|
IFS=$'\n'
|
|
|
|
|
|
|
|
# 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
|
|
|
|
# 3 | fix width | Don't reload when width changes
|
|
|
|
# 4 | fix height | Don't reload when height changes
|
|
|
|
# 5 | fix both | Don't ever reload
|
|
|
|
# 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
|
|
|
|
# 7 | image | Display the file directly as an image
|
|
|
|
|
|
|
|
# Script arguments
|
|
|
|
FILE_PATH="${1}" # Full path of the highlighted file
|
|
|
|
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
|
|
|
|
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
|
|
|
|
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
|
|
|
|
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
|
|
|
|
|
|
|
|
FILE_EXTENSION="${FILE_PATH##*.}"
|
|
|
|
FILE_EXTENSION_LOWER=$(echo "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')
|
|
|
|
|
|
|
|
# Settings
|
|
|
|
PYGMENTIZE_STYLE='autumn'
|
|
|
|
|
|
|
|
|
|
|
|
handle_extension() {
|
|
|
|
case "${FILE_EXTENSION_LOWER}" in
|
|
|
|
# Preview archive files by showing their first containing image.
|
|
|
|
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)
|
|
|
|
atool --list -- "${FILE_PATH}" && exit 5
|
|
|
|
bsdtar --list --file "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
rar)
|
|
|
|
# Avoid password prompt by providing empty password
|
|
|
|
unrar lt -p- -- "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
7z)
|
|
|
|
# Avoid password prompt by providing empty password
|
|
|
|
7z l -p -- "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
# PDF
|
|
|
|
pdf)
|
|
|
|
# Preview as text conversion
|
|
|
|
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | fmt -w "${PV_WIDTH}" && exit 5
|
|
|
|
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | fmt -w "${PV_WIDTH}" && exit 5
|
|
|
|
exiftool "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
# BitTorrent
|
|
|
|
torrent)
|
|
|
|
transmission-show -- "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
# OpenDocument
|
|
|
|
odt|ods|odp|sxw)
|
|
|
|
# Preview as text conversion
|
|
|
|
odt2txt "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
# HTML
|
|
|
|
htm|html|xhtml)
|
|
|
|
# Preview as text conversion
|
|
|
|
w3m -dump "${FILE_PATH}" && exit 5
|
|
|
|
lynx -dump -- "${FILE_PATH}" && exit 5
|
|
|
|
elinks -dump "${FILE_PATH}" && exit 5
|
|
|
|
;; # Continue with next handler on failure
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
handle_image() {
|
|
|
|
local mimetype="${1}"
|
|
|
|
case "${mimetype}" in
|
|
|
|
# SVG
|
|
|
|
# image/svg+xml)
|
|
|
|
# convert "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
|
|
|
|
# exit 1;;
|
|
|
|
|
|
|
|
# Image
|
|
|
|
image/*)
|
|
|
|
local orientation
|
|
|
|
orientation="$( identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}" )"
|
|
|
|
# If orientation data is present and the image actually
|
|
|
|
# needs rotating ("1" means no rotation)...
|
|
|
|
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
|
|
|
|
# ...auto-rotate the image according to the EXIF data.
|
|
|
|
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
|
|
|
|
fi
|
|
|
|
|
|
|
|
# `w3mimgdisplay` will be called for all images (unless overriden as above),
|
|
|
|
# but might fail for unsupported types.
|
|
|
|
exit 7;;
|
|
|
|
|
|
|
|
# Video
|
|
|
|
video/*)
|
|
|
|
# Thumbnail
|
|
|
|
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
|
|
|
|
exit 1;;
|
What
the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little "clever" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo.
5 years ago
|
|
|
# PDF
|
|
|
|
# application/pdf)
|
|
|
|
# pdftoppm -f 1 -l 1 \
|
|
|
|
# -scale-to-x 1920 \
|
|
|
|
# -scale-to-y -1 \
|
|
|
|
# -singlefile \
|
|
|
|
# -jpeg -tiffcompression jpeg \
|
|
|
|
# -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
|
|
|
|
# && exit 6 || exit 1;;
|
|
|
|
|
|
|
|
# Preview archive files by showing their first containing image.
|
|
|
|
# application/zip|application/x-rar|application/x-7z-compressed|\
|
|
|
|
# application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
|
|
|
|
# local fn=""; local fe=""
|
|
|
|
# local zip=""; local rar=""; local tar=""; local bsd=""
|
|
|
|
# case "${mimetype}" in
|
|
|
|
# application/zip) zip=1 ;;
|
|
|
|
# application/x-rar) rar=1 ;;
|
|
|
|
# application/x-7z-compressed) ;;
|
|
|
|
# *) tar=1 ;;
|
|
|
|
# esac
|
|
|
|
# { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
|
|
|
|
# { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
|
|
|
|
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
|
|
|
|
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
|
|
|
|
#
|
|
|
|
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
|
|
|
|
# [ print(l, end='') for l in sys.stdin if \
|
|
|
|
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
|
|
|
|
# sort -V | head -n 1)
|
|
|
|
# [ "$fn" = "" ] && return
|
|
|
|
# [ "$bsd" ] && fn=$(printf '%b' "$fn")
|
|
|
|
#
|
|
|
|
# [ "$tar" ] && tar --extract --to-stdout \
|
|
|
|
# --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
|
|
|
|
# fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
|
|
|
|
# [ "$bsd" ] && bsdtar --extract --to-stdout \
|
|
|
|
# --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
|
|
|
|
# [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
|
|
|
|
# [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
|
|
|
|
# "${IMAGE_CACHE_PATH}" && exit 6
|
|
|
|
# [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
|
|
|
|
# "${IMAGE_CACHE_PATH}" && exit 6
|
|
|
|
# [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
|
|
|
|
# ;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
handle_mime() {
|
|
|
|
local mimetype="${1}"
|
|
|
|
case "${mimetype}" in
|
|
|
|
# Text
|
|
|
|
text/* | */xml)
|
|
|
|
# Syntax highlight
|
|
|
|
if [[ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
|
|
|
|
exit 2
|
|
|
|
fi
|
|
|
|
if [[ "$( tput colors )" -ge 256 ]]; then
|
|
|
|
local pygmentize_format='terminal256'
|
|
|
|
else
|
|
|
|
local pygmentize_format='terminal'
|
|
|
|
fi
|
|
|
|
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}" -- "${FILE_PATH}" && exit 5
|
What
the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little "clever" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo.
5 years ago
|
|
|
exit 2;;
|
|
|
|
|
|
|
|
# Image
|
|
|
|
image/*)
|
|
|
|
# Preview as text conversion
|
|
|
|
# img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
|
|
|
|
exiftool "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
# Video and audio
|
|
|
|
video/* | audio/*)
|
|
|
|
mediainfo "${FILE_PATH}" && exit 5
|
|
|
|
exiftool "${FILE_PATH}" && exit 5
|
|
|
|
exit 1;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
handle_fallback() {
|
|
|
|
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
|
|
|
|
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
|
|
|
|
handle_image "${MIMETYPE}"
|
|
|
|
fi
|
|
|
|
handle_extension
|
|
|
|
handle_mime "${MIMETYPE}"
|
|
|
|
handle_fallback
|
|
|
|
|
|
|
|
exit 1
|