From 00780218bd1380c1677bc458a11f1fd48b968536 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Tue, 17 Aug 2021 03:51:45 +0200 Subject: [PATCH] Add ability to use pixterm for img previews --- home/.config/lf/draw_img.sh | 26 ++++++++++++++++++-------- home/.config/lf/previewer.sh | 13 ++++++++++--- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/home/.config/lf/draw_img.sh b/home/.config/lf/draw_img.sh index e735652..1547ca0 100755 --- a/home/.config/lf/draw_img.sh +++ b/home/.config/lf/draw_img.sh @@ -1,11 +1,21 @@ #!/bin/sh -readonly PREVIEW_ID="preview" - -printf '{"action": "add", "identifier": "%s", "x": %d, "y": %d, "width": %d, "height": %d, "scaler": "contain", "scaling_position_x": 0.5, "scaling_position_y": 0.5, "path": "%s"}\n' \ - "$PREVIEW_ID" "$2" "$3" "$4" "$5" "$1" > "$FIFO_UEBERZUG" - -#declare -p -A cmd=([action]=add [identifier]="$PREVIEW_ID" \ -# [x]="$2" [y]="$3" [max_width]="$4" [max_height]="$5" \ -# [path]="$1") > "$FIFO_UEBERZUG" +path="$1" +x="$2" +y="$3" +width="$4" +height="$5" +PREVIEW_ID="preview" +if [ -n "$FIFO_UEBERZUG" ]; then + printf '{"action": "add", "identifier": "%s", "x": %d, "y": %d, "width": %d, "height": %d, "scaler": "contain", "scaling_position_x": 0.5, "scaling_position_y": 0.5, "path": "%s"}\n' \ + "$PREVIEW_ID" "$x" "$y" "$width" "$height" "$path" > "$FIFO_UEBERZUG" +else + # Ueberzug isn't avialable, try to use pixterm + if command -v pixterm > /dev/null; then + pixterm -s 2 -tr "$x" -tc "$width" "$path" + else + >&2 echo "ueberzug not running, pixterm fallback not found!" + exit 1 + fi +fi diff --git a/home/.config/lf/previewer.sh b/home/.config/lf/previewer.sh index d945a44..962ff14 100755 --- a/home/.config/lf/previewer.sh +++ b/home/.config/lf/previewer.sh @@ -1,9 +1,15 @@ #!/bin/sh # This script handles showing file-previews within lf. + # It can also show image previews using ueberzug, however -# that requires lf to be start with a script that also starts +# that requires lf to be started with a script that also starts # ueberzug alongside of it. # (In my dotfiles, this script is in '~/.local/bin/scripts/lfu') +# Alternatively, we could also handle ANSI previews with pixterms +# this will be in a pretty low quiality, but it will work without +# ueberzug. To enable this, change PIXTERM_ENABLED to 1. +# if both ueberzug and pixterm are enabled, ueberzug takes precedence. +PIXTERM_ENABLED=1 run_cmd() { # Try to run given command, if it is installed. @@ -77,7 +83,8 @@ media_handle() { file="$1" shift - # Set ENABLED=1 if ueberzug is enabled + # Set ENABLED=1 if ueberzug or pixterm is enabled + command -v pixterm > /dev/null && [ "$PIXTERM_ENABLED" = 1 ] && ENABLED=1 [ -n "$FIFO_UEBERZUG" ] && [ -f "$draw_script" ] && ENABLED=1 case "$file" in @@ -85,7 +92,7 @@ media_handle() { if [ -n "$ENABLED" ]; then draw_image $draw_script "$file" else - echo "@@PREVIEW FALLBACK: Using mediainfo, ueberzug isn't aviable." + echo "@@PREVIEW FALLBACK: Using mediainfo, ueberzug isn't available." run_cmd mediainfo "$file" fi ;;