-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfzf-preview.sh
executable file
·56 lines (49 loc) · 1.77 KB
/
fzf-preview.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
tmp_img=$(mktemp /tmp/fzf-preview.XXXXXXXXXX)
tmp_ueberzug_file=""
# Choose image previewer
if command -v ueberzug > /dev/null; then
image_preview="ueberzug_preview"
# Initialize ueberzug (listen to /tmp/fzf-ueberzug.XXXXXXXXXX)
tmp_ueberzug_file=$(mktemp /tmp/fzf-ueberzug.XXXXXXXXXX)
if command -v ueberzugpp > /dev/null; then
tail -f --pid=$$ $tmp_ueberzug_file 2> /dev/null | ueberzugpp layer --silent &
else
tail -f --pid=$$ $tmp_ueberzug_file 2> /dev/null | ueberzug layer --silent &
fi
elif [[ $KITTY_WINDOW_ID ]]; then
image_preview="kitty_preview"
elif command -v chafa > /dev/null; then
image_preview="chafa_preview"
elif command -v catimg > /dev/null; then
image_preview="catimg_preview"
else
image_preview="no_image_preview"
fi
cleanup () {
# Clear last image and remove temporary files
if command -v ueberzug > /dev/null; then
echo '{"action": "remove", "identifier": "fzf"}' >> $tmp_ueberzug_file
fi
rm -f $tmp_img $tmp_ueberzug_file
}
trap cleanup HUP
# Set fzf command
if command -v fd > /dev/null; then
export FZF_DEFAULT_COMMAND='fd -H --type file'
fi
# Set fzf default options (preview command, refresh on terminal resize, show header)
export FZF_DEFAULT_OPTS="\
--preview '$(dirname "$0")/fzf-file2preview.sh {} $image_preview $tmp_img $tmp_ueberzug_file'
--bind 'resize:refresh-preview' --bind 'focus:transform-header:file --brief {}'"
# Run fzf and bind to a file opener
if command -v rifle > /dev/null; then # ranger's file opener
fzf --multi --bind 'enter:become(rifle {+})'
elif command -v open > /dev/null; then
fzf --multi --bind 'enter:become(open {+})'
elif command -v xdg-open > /dev/null; then
fzf --multi --bind 'enter:become(xdg-open {+})'
else
fzf
fi
cleanup