commit ac29a7c166591c956cc4224272df429006964542
parent 49c458517fd1634deeb5d9d399ce054dd1ae656b
Author: luukvbaal <31730729+luukvbaal@users.noreply.github.com>
Date: Sun, 21 Mar 2021 02:41:14 +0100
preview-tui fixes (#900)
* redraw preview on resize
* fix stray preview pane after exit
* restore cleanup
* fix image bin info fallback
Diffstat:
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/plugins/preview-tui b/plugins/preview-tui
@@ -69,6 +69,7 @@ TMPDIR="${TMPDIR:-/tmp}"
NUMPREVIEWTUI="$(($(find "$TMPDIR" -maxdepth 1 -name 'nnn-preview-tui-pagerpid*' 2>/dev/null | wc -l) + 1))"
PAGERPID="$TMPDIR/nnn-preview-tui-pagerpid.$NUMPREVIEWTUI"
GIFPID="$TMPDIR/nnn-preview-tui-gifpid.$NUMPREVIEWTUI"
+CURSEL="$TMPDIR/nnn-preview-tui-selection.$NUMPREVIEWTUI"
FIFO_UEBERZUG="$TMPDIR/nnn-preview-tui-ueberzug-fifo.$NUMPREVIEWTUI"
[ "$PAGER" = "most" ] && PAGER="less -R"
@@ -191,7 +192,7 @@ image_preview() {
viu -t "$3" &
echo "$!" > "$GIFPID"
else
- fifo_pager print_bin_info "$1"
+ fifo_pager print_bin_info "$3"
fi
}
@@ -205,16 +206,18 @@ ueberzug_remove() {
ueberzug_refresh() {
clear
+ kill "$(cat "$GIFPID" 2>/dev/null)" >/dev/null 2>&1
pkill -P "$$" >/dev/null 2>&1
pkill -f -n preview-tui-ext >/dev/null 2>&1
- echo > "$NNN_FIFO"
tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser json &
+ preview_file "$(cat "$CURSEL")"
+ echo > "$NNN_FIFO"
preview_fifo &
wait
}
if [ "$TERMINAL" != "kitty" ] && [ "$PREVIEW_MODE" ] && exists ueberzug; then
trap 'ueberzug_refresh' WINCH
- trap 'rm "$FIFO_UEBERZUG" "$PAGERPID" "$GIFPID"' INT HUP EXIT
+ trap 'rm "$FIFO_UEBERZUG" "$PAGERPID" "$GIFPID" "$CURSEL"' INT HUP EXIT
fi
preview_fifo() {
@@ -226,9 +229,11 @@ preview_fifo() {
kill "$(cat "$PAGERPID" 2>/dev/null)" >/dev/null 2>&1
[ "$TERMINAL" != "kitty" ] && exists ueberzug && ueberzug_remove
preview_file "$selection"
+ echo "$selection" > "$CURSEL"
done
[ "$TERMINAL" != "kitty" ] && exists ueberzug && rm "$FIFO_UEBERZUG"
- rm "$PAGERPID" "$GIFPID" >/dev/null 2>&1
+ rm "$PAGERPID" "$GIFPID" "$CURSEL" >/dev/null 2>&1
+ pkill -P "$$" >/dev/null 2>&1
}
if [ "$PREVIEW_MODE" ]; then
diff --git a/plugins/preview-tui-ext b/plugins/preview-tui-ext
@@ -79,6 +79,7 @@ TMPDIR="${TMPDIR:-/tmp}"
NUMPREVIEWTUI="$(($(find "$TMPDIR" -maxdepth 1 -name 'nnn-preview-tui-pagerpid*' 2>/dev/null | wc -l) + 1))"
PAGERPID="$TMPDIR/nnn-preview-tui-pagerpid.$NUMPREVIEWTUI"
GIFPID="$TMPDIR/nnn-preview-tui-gifpid.$NUMPREVIEWTUI"
+CURSEL="$TMPDIR/nnn-preview-tui-selection.$NUMPREVIEWTUI"
FIFO_UEBERZUG="$TMPDIR/nnn-preview-tui-ueberzug-fifo.$NUMPREVIEWTUI"
[ "$PAGER" = "most" ] && PAGER="less -R"
@@ -272,7 +273,7 @@ image_preview() {
viu -t "$3" &
echo "$!" > "$GIFPID"
else
- fifo_pager print_bin_info "$1"
+ fifo_pager print_bin_info "$3"
fi
}
@@ -286,16 +287,18 @@ ueberzug_remove() {
ueberzug_refresh() {
clear
+ kill "$(cat "$GIFPID" 2>/dev/null)" >/dev/null 2>&1
pkill -P "$$" >/dev/null 2>&1
pkill -f -n preview-tui-ext >/dev/null 2>&1
- echo > "$NNN_FIFO"
tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser json &
+ preview_file "$(cat "$CURSEL")"
+ echo > "$NNN_FIFO"
preview_fifo &
wait
}
if [ "$TERMINAL" != "kitty" ] && [ "$PREVIEW_MODE" ] && exists ueberzug; then
trap 'ueberzug_refresh' WINCH
- trap 'rm "$FIFO_UEBERZUG" "$PAGERPID" "$GIFPID"' INT HUP EXIT
+ trap 'rm "$FIFO_UEBERZUG" "$PAGERPID" "$GIFPID" "$CURSEL"' INT HUP EXIT
fi
preview_fifo() {
@@ -307,9 +310,11 @@ preview_fifo() {
kill "$(cat "$PAGERPID" 2>/dev/null)" >/dev/null 2>&1
[ "$TERMINAL" != "kitty" ] && exists ueberzug && ueberzug_remove
preview_file "$selection"
+ echo "$selection" > "$CURSEL"
done
[ "$TERMINAL" != "kitty" ] && exists ueberzug && rm "$FIFO_UEBERZUG"
- rm "$PAGERPID" "$GIFPID" >/dev/null 2>&1
+ rm "$PAGERPID" "$GIFPID" "$CURSEL" >/dev/null 2>&1
+ pkill -P "$$" >/dev/null 2>&1
}