mirror of
https://github.com/junegunn/fzf.git
synced 2025-11-18 08:13:40 -05:00
(Experimental) Improve Sixel graphics support (#2544)
Progress:
* Sixel image can now be displayed with other text, and is scrollable
* If an image can't be displayed entirely due to the scroll offset, fzf
will render a wireframe to indicate that an image should be displayed
* Renamed $FZF_PREVIEW_{WIDTH,HEIGHT} to $FZF_PREVIEW_PIXEL_{WIDTH,HEIGHT}
for clarity
* Added bin/fzf-preview.sh script to demonstrate how to display an image
using Kitty or Sixel protocol
An example:
ls *.jpg | fzf --preview='seq $((FZF_PREVIEW_LINES*9/10)); fzf-preview.sh {}; seq 100'
A known issue:
* If you reduce the size of the preview window, the image may extend
beyond the preview window
This commit is contained in:
30
bin/fzf-preview.sh
Executable file
30
bin/fzf-preview.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# The purpose of this script is to demonstrate how to preview a file or an
|
||||
# image in the preview window of fzf.
|
||||
|
||||
file=$1
|
||||
type=$(file --mime-type "$file")
|
||||
|
||||
if [[ ! $type =~ image/ ]]; then
|
||||
# Sometimes bat is installed as batcat.
|
||||
if command -v batcat > /dev/null; then
|
||||
batname="batcat"
|
||||
elif command -v bat > /dev/null; then
|
||||
batname="bat"
|
||||
else
|
||||
cat "$1"
|
||||
exit
|
||||
fi
|
||||
|
||||
${batname} --style="${BAT_STYLE:-numbers}" --color=always --pager=never -- "$file"
|
||||
elif [[ $KITTY_WINDOW_ID ]]; then
|
||||
# 'memory' is the fastest option but if you want the image to be scrollable,
|
||||
# you have to use 'stream'
|
||||
kitty icat --clear --transfer-mode=memory --stdin=no --place="${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}@0x0" "$file" | sed \$d
|
||||
echo -en "\e[m"
|
||||
elif [[ -n $FZF_PREVIEW_PIXEL_WIDTH ]]; then
|
||||
convert "$file" -resize "${FZF_PREVIEW_PIXEL_WIDTH}x${FZF_PREVIEW_PIXEL_HEIGHT}>" -dither FloydSteinberg sixel:-
|
||||
else
|
||||
file "$file"
|
||||
fi
|
||||
Reference in New Issue
Block a user