fzy
terminal fuzzy finder picker
git clone https://9o.is/git/fzy.git
fzy-tmux
(1021B)
1 #!/bin/sh
2
3 _echo() {
4 printf %s\\n "$*"
5 }
6
7 fatal() {
8 _echo "$*" >&2
9 exit 1
10 }
11
12 main() {
13 if [ -z "${TMUX}" ]; then
14 fatal "No TMUX variable detected in the environment"
15 fi
16
17 readonly PATH_DIR_TMP=$(mktemp -d)
18 readonly PATH_FIFO_IN="${PATH_DIR_TMP}/in"
19 readonly PATH_FIFO_OUT="${PATH_DIR_TMP}/out"
20 readonly PATH_FIFO_RET="${PATH_DIR_TMP}/ret"
21
22 if [ -z "${PATH_DIR_TMP}" ]; then
23 fatal "Unable to create a temporary directory"
24 fi
25
26 mkfifo "${PATH_FIFO_IN}" "${PATH_FIFO_OUT}" "${PATH_FIFO_RET}"
27
28 export TMUX=$(_echo "${TMUX}" | cut -d , -f 1,2)
29 eval "tmux \
30 set-window-option synchronize-panes off \\; \
31 set-window-option remain-on-exit off \\; \
32 split-window \"fzy $* < '${PATH_FIFO_IN}' > '${PATH_FIFO_OUT}' 2>&1; echo $? > '${PATH_FIFO_RET}'\""
33
34 cat <&0 > "${PATH_FIFO_IN}" &
35 cat < "${PATH_FIFO_OUT}"
36
37 readonly CODE_RET=$(head -n 1 "${PATH_FIFO_RET}")
38
39 rm -rf "${PATH_DIR_TMP}"
40
41 exit "${CODE_RET}"
42 }
43
44 main "$@"