summaryrefslogtreecommitdiffstats
path: root/.config/lf/scope
diff options
context:
space:
mode:
Diffstat (limited to '.config/lf/scope')
-rwxr-xr-x.config/lf/scope38
1 files changed, 38 insertions, 0 deletions
diff --git a/.config/lf/scope b/.config/lf/scope
new file mode 100755
index 0000000..3bc2f9c
--- /dev/null
+++ b/.config/lf/scope
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# File preview handler for lf.
+
+set -C -f
+# IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
+
+# image() {
+# if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then
+# printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG"
+# else
+# mediainfo "$1"
+# fi
+# }
+
+# ifub() {
+# [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1
+# }
+
+# Note that the cache file name is a function of file information, meaning if
+# an image appears in multiple places across the machine, it will not have to
+# be regenerated once seen.
+
+case "$(file --dereference --brief --mime-type -- "$1")" in
+ image/*) mediainfo "$1" || exit 1 ;;
+ text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
+ text/troff) man ./ "$1" | col -b ;;
+ text/* | */xml | application/json) bat --plain --terminal-width "$4" -f "$1" ;;
+ application/zip) atool --list -- "$1" ;;
+ application/x-xz) atool --list -- "$1" ;;
+ application/gzip) atool --list -- "$1" ;;
+ audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
+ video/* ) mediainfo "$1" || exit 1 ;;
+ */pdf) pdftotext "$1" - || exit 1 ;;
+ *opendocument*) odt2txt "$1" || exit 1;;
+ application/pgp-encrypted) gpg -d -- "$1" ;;
+esac
+exit 1