The simple success case had only the status line plus a single CRLF,
and pedantic HTTP client implementations (`hyper`) stumbled over
this. A double CRLF makes it OK.
Fixes#3541.
Close#1102
fzf --preview 'imgcat -W $FZF_PREVIEW_COLUMNS -H $FZF_PREVIEW_LINES {}'
Notes:
* There is no good way to determine the height of the rendered image,
so we assume that the image takes the full height of the preview
window. So the image cannot be displayed with the other text.
* fzf-preview.sh script was updated to use `imgcat` if it's available
but `chafa` is not.
* iTerm2 also supports Sixel, so adding support for this protocol is not
quite necessary but it renders animated GIFs much better (e.g. looping).
So that it can determine if it should subtract 1 from $FZF_PREVIEW_LINES
to avoid scrolling issue of Sixel image that touches the bottom of the
screen.
When a Sixel image touches the bottom of the screen, the whole screen
scrolls up one line to make room for the cursor. Add an ANSI escape
code to compensate for the movement. Unfortunately, the movement of the
screen is sometimes noticeable.
fzf --preview='fzf-preview.sh {}' --preview-window border-left
* Fix regression where previous image is not properly cleared
* Change the way fzf calculates the number of required lines to display
an image (ceil -> floor) to fix the issue where an image is always
rendered as a wireframe.
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
when the preview window is re-enabled and the current preview process is
taking more than 500ms and previewDelayed is triggered
fzf --preview 'sleep 1; date; seq 1000' --bind space:toggle-preview