# HG changeset patch # User Peter Sanchez # Date 1717444091 21600 # Mon Jun 03 13:48:11 2024 -0600 # Node ID 23b549b6df2212c57b6d53fa26d4f98a345c3472 # Parent fde2ce2bd98a7449df944e8de384aab2a2227018 Another vifm update diff --git a/.config/vifm/vifmrc b/.config/vifm/vifmrc --- a/.config/vifm/vifmrc +++ b/.config/vifm/vifmrc @@ -247,9 +247,9 @@ "fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm " \ convert -identify %f -verbose /dev/null -fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm - \ show-sixel %c %pw %ph %pd -" fileviewer *.jpg,*.jpeg,*.png,*.ico vifmimg draw %px %py %pw %ph %c %pc vifmimg clear +" fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm +" \ show-sixel %c %pw %ph %pd +fileviewer *.jpg,*.jpeg,*.png,*.ico vifmimg draw %px %py %pw %ph %c %pc vifmimg clear " filextype *.bmp,*.jpg,*.jpeg,*.png,*.ico,*.gif,*.xpm rotdir %f 2>/dev/null | sxiv -ia 2>/dev/null & filextype *.bmp,*.jpg,*.jpeg,*.png,*.ico,*.gif,*.xpm sxiv -ia 2>/dev/null & diff --git a/bin/vifmimg b/bin/vifmimg new file mode 100755 --- /dev/null +++ b/bin/vifmimg @@ -0,0 +1,57 @@ +#!/bin/sh + +#PCACHE="$HOME/.cache/vifm/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$PWD/$6")" | sha256sum)" +PCACHE="$HOME/.cache/vifm/thumbnail.$(stat -c '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$PWD/$6")" | sha256sum)" +export PCACHE="${PCACHE%% *}" + +pclear() { + printf '{"action": "remove", "identifier": "vifm-preview"}\n' > "$FIFO_UEBERZUG" +} + +image() { + printf '{"action": "add", "identifier": "vifm-preview", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$2" "$3" "$4" "$5" "$6" > "$FIFO_UEBERZUG" +} + +main() { + case "$1" in + "clear") + pclear "$@" + ;; + "draw") + FILE="$PWD/$6" + image "$1" "$2" "$3" "$4" "$5" "$FILE" + ;; + "video") + [ ! -f "${PCACHE}.jpg" ] && \ + ffmpegthumbnailer -i "$6" -o "${PCACHE}.jpg" -s 0 -q 5 + image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg" + ;; + "epub") + [ ! -f "$PCACHE" ] && \ + epub-thumbnailer "$6" "$PCACHE" 1024 + image "$1" "$2" "$3" "$4" "$5" "$PCACHE" + ;; + "pdf") + [ ! -f "${PCACHE}.jpg" ] && \ + pdftoppm -jpeg -f 1 -singlefile "$6" "$PCACHE" + image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg" + ;; + "djvu") + [ ! -f "${PCACHE}.jpg" ] && \ + ddjvu -format=tiff -quality=90 -page=1 "$6" "$PCACHE.jpg" + image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg" + ;; + "audio") + [ ! -f "${PCACHE}.jpg" ] && \ + ffmpeg -hide_banner -i "$6" "${PCACHE}.jpg" -y >/dev/null + image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg" + ;; + "font") + [ ! -f "${PCACHE}.jpg" ] && \ + fontpreview -i "$6" -o "${PCACHE}.jpg" + image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg" + ;; + *) + esac +} +main "$@" diff --git a/bin/vifmrun b/bin/vifmrun new file mode 100755 --- /dev/null +++ b/bin/vifmrun @@ -0,0 +1,21 @@ +#!/bin/sh + +if [ -z "$(command -v vifm)" ]; then + printf "vifm isn't installed on your system!\n" + exit 1 +elif [ -z "$(command -v ueberzug)" ]; then + exec vifm "$@" +else + cleanup() { + exec 3>&- + rm "$FIFO_UEBERZUG" + } + [ ! -d "$HOME/.cache/vifm" ] && mkdir -p "$HOME/.cache/vifm" + export FIFO_UEBERZUG="$HOME/.cache/vifm/ueberzug-${$}" + mkfifo "$FIFO_UEBERZUG" + ueberzug layer -s <"$FIFO_UEBERZUG" -p json & + exec 3>"$FIFO_UEBERZUG" + trap cleanup EXIT + vifm "$@" 3>&- + vifmimg clear +fi