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 "$@"