From 58e84ff53ceaf415e2a598c0122da526a27c3f38 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Thu, 23 Apr 2026 04:00:13 +0530 Subject: passing paths to the the executables used in the script --- modules/scripts/default.nix | 20 +++++++++++++++++-- modules/scripts/file-preview.sh | 44 +++++++++++++++++++---------------------- 2 files changed, 38 insertions(+), 26 deletions(-) (limited to 'modules/scripts') diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix index 9c7bba8..b4a6106 100644 --- a/modules/scripts/default.nix +++ b/modules/scripts/default.nix @@ -45,7 +45,14 @@ let }; file-preview = { path = ./file-preview.sh; - env = { }; + env = { + BAT = lib.getExe pkgs.bat; + FILE = lib.getExe pkgs.file; + FFMPEG = lib.getExe' pkgs.ffmpeg-full "ffmpeg"; + FFPROBE = lib.getExe' pkgs.ffmpeg-full "ffprobe"; + OUCH = lib.getExe pkgs.ouch; + PDFTOPPM = lib.getExe' pkgs.poppler-utils "pdftoppm"; + }; deps = [ pkgs.bat pkgs.file @@ -55,7 +62,16 @@ let ]; conditions = [ { - option = "tools.fzf.enable"; + option = "tools.ffmpeg.enable"; + value = true; + } + { + option = "tools.ouch.enable"; + value = true; + } + { + # not a dependency + option = "tools.zathura.enable"; value = true; } ]; diff --git a/modules/scripts/file-preview.sh b/modules/scripts/file-preview.sh index 1dd810f..1f884ee 100644 --- a/modules/scripts/file-preview.sh +++ b/modules/scripts/file-preview.sh @@ -6,7 +6,7 @@ if [ -z "$LF_PREVIEW_RUNNING" ]; then fi # Parameters from lf -FILE="$1" +FILE_PATH="$1" WIDTH="$2" HEIGHT="$3" X="$4" @@ -15,7 +15,7 @@ Y="$5" # Temp dir TMP_DIR="/tmp/lf-preview-$(id -u)" mkdir -p "$TMP_DIR" -TMP_IMG="$TMP_DIR/pv-$(basename "$FILE" | tr -c '[:alnum:]' '_').png" +TMP_IMG="$TMP_DIR/pv-$(basename "$FILE_PATH" | tr -c '[:alnum:]' '_').png" # Render image via kitty render_image() { @@ -30,36 +30,36 @@ x="$4" y="$5" # Ensure file exists -[ ! -r "$FILE" ] && exit 0 +[ ! -r "$FILE_PATH" ] && exit 0 -MIMETYPE=$(file --dereference --brief --mime-type "$FILE") +MIMETYPE=$(file --dereference --brief --mime-type "$FILE_PATH") case "$MIMETYPE" in # --- IMAGES --- image/svg+xml) - rsvg-convert "$FILE" -o "$TMP_IMG" >/dev/null 2>&1 && render_image "$TMP_IMG" + rsvg-convert "$FILE_PATH" -o "$TMP_IMG" >/dev/null 2>&1 && render_image "$TMP_IMG" ;; image/*) - render_image "$FILE" + render_image "$FILE_PATH" ;; # --- VIDEOS --- video/*) if command -v ffmpegthumbnailer >/dev/null; then - ffmpegthumbnailer -i "$FILE" -o "$TMP_IMG" -s 0 -q 5 >/dev/null 2>&1 + ffmpegthumbnailer -i "$FILE_PATH" -o "$TMP_IMG" -s 0 -q 5 >/dev/null 2>&1 else - ffmpeg -y -i "$FILE" -ss 00:00:01 -vframes 1 "$TMP_IMG" >/dev/null 2>&1 + "$FFMPEG" -y -i "$FILE_PATH" -ss 00:00:01 -vframes 1 "$TMP_IMG" >/dev/null 2>&1 fi [ -f "$TMP_IMG" ] && render_image "$TMP_IMG" ;; # --- AUDIO --- audio/*) - ffmpeg -y -i "$FILE" \ + "$FFMPEG" -y -i "$FILE_PATH" \ -filter_complex "showwavespic=s=${WIDTH}x${HEIGHT}:colors=white" \ -frames:v 1 "$TMP_IMG" >/dev/null 2>&1 - ffprobe -hide_banner -v quiet -show_format -show_streams "$FILE" + "$FFPROBE" -hide_banner -v quiet -show_format -show_streams "$FILE_PATH" [ -f "$TMP_IMG" ] && render_image "$TMP_IMG" exit 0 @@ -67,53 +67,49 @@ case "$MIMETYPE" in # --- PDF --- application/pdf) - pdftoppm -f 1 -l 1 -png -singlefile "$FILE" "${TMP_IMG%.png}" >/dev/null 2>&1 + "$PDFTOPPM" -f 1 -l 1 -png -singlefile "$FILE_PATH" "${TMP_IMG%.png}" >/dev/null 2>&1 [ -f "$TMP_IMG" ] && render_image "$TMP_IMG" ;; # --- EPUB / MOBI --- application/epub+zip|application/x-mobipocket-ebook) - ouch decompress "$FILE" --limit "*/cover*.jpg" --dir /tmp && mv /tmp/cover*.jpg "$TMP_IMG" + "$OUCH" decompress "$FILE_PATH" --limit "*/cover*.jpg" --dir /tmp && mv /tmp/cover*.jpg "$TMP_IMG" [ -s "$TMP_IMG" ] && render_image "$TMP_IMG" ;; # --- OFFICE --- application/vnd.openxmlformats-officedocument.*|application/msword|application/vnd.oasis.opendocument.*) - libreoffice --headless --convert-to pdf --outdir "$TMP_DIR" "$FILE" >/dev/null 2>&1 - PDF_VER="${TMP_DIR}/$(basename "${FILE%.*}").pdf" + libreoffice --headless --convert-to pdf --outdir "$TMP_DIR" "$FILE_PATH" >/dev/null 2>&1 + PDF_VER="${TMP_DIR}/$(basename "${FILE_PATH%.*}").pdf" if [ -f "$PDF_VER" ]; then - pdftoppm -f 1 -l 1 -png -singlefile "$PDF_VER" "${TMP_IMG%.png}" >/dev/null 2>&1 + "$PDFTOPPM" -f 1 -l 1 -png -singlefile "$PDF_VER" "${TMP_IMG%.png}" >/dev/null 2>&1 render_image "$TMP_IMG" fi ;; # --- ARCHIVES --- application/zip|application/x-7z-compressed|application/x-rar|application/x-tar|application/x-gzip) - ouch list -t "$FILE" 2>/dev/null + "$OUCH" list -t "$FILE_PATH" 2>/dev/null exit 0 ;; # --- TEXT / CODE --- text/*|application/json|application/javascript|application/xml) - if command -v bat >/dev/null; then - bat --color=always --style=numbers --line-range :200 "$FILE" - else - cat "$FILE" - fi + "$BAT" --color=always --style=numbers --line-range :200 "$FILE_PATH" exit 0 ;; # --- FONTS --- font/*|application/vnd.ms-fontobject|application/x-font-ttf) - fc-scan "$FILE" + fc-scan "$FILE_PATH" exit 0 ;; # --- FALLBACK --- *) - file --dereference --brief "$FILE" + file --dereference --brief "$FILE_PATH" echo "------------------------------------------------" - hexdump -C "$FILE" | head -n 100 + hexdump -C "$FILE_PATH" | head -n 100 exit 0 ;; esac -- cgit v1.2.3