46 lines
1.1 KiB
Bash
Executable File
46 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This is a simple script that allows you to have image preview
|
|
# in fzf, using ueberzugpp with fifo. For this script to work
|
|
# you must add it to path, because it requires to call itself
|
|
# during the preview process in fzf (line 42 -> $0).
|
|
# Example usage:
|
|
# ls | fzf-fifo
|
|
# find $HOME/pix/ -type f -iname "*.jpg" | fzf-fifo
|
|
|
|
FIFO="/tmp/fzf_preview_fifo"
|
|
[ -p "$FIFO" ] || mkfifo "$FIFO"
|
|
|
|
start_ueberzugpp() {
|
|
ueberzugpp layer --silent <"$FIFO" &
|
|
exec 3>"${FIFO}"
|
|
}
|
|
|
|
cleanup() {
|
|
exec 3>&-
|
|
}
|
|
trap cleanup HUP INT QUIT TERM EXIT
|
|
|
|
preview_image() {
|
|
echo '{"path": "'"$1"'", "action": "add", ''"identifier": "fzfpreview", '\
|
|
'"x": "'"$FZF_PREVIEW_LEFT"'", "y": "'"$FZF_PREVIEW_TOP"'", '\
|
|
'"width": "'"$FZF_PREVIEW_COLUMNS"'", "height": "'"$FZF_PREVIEW_LINES"'"}' \
|
|
>"$FIFO"
|
|
}
|
|
|
|
case "$1" in
|
|
-W)
|
|
shift
|
|
preview_image "$@"
|
|
exit
|
|
;;
|
|
esac
|
|
|
|
main() {
|
|
start_ueberzugpp
|
|
selected_image=$(fzf --preview "$0 -W {}" --preview-window=up:60%:wrap)
|
|
[ -n "$selected_image" ] && echo "Selected image: $selected_image"
|
|
rm "$FIFO"
|
|
}
|
|
main
|