Browse code

Merge pull request #30 from lenormf/multiplexer-support

Implement support scripts for `tmux` and `dvtm`

John Hawthorn authored on 23/02/2017 00:45:21 • GitHub committed on 23/02/2017 00:45:21
Showing 2 changed files

1 1
new file mode 100755
... ...
@@ -0,0 +1,50 @@
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 "${DVTM_CMD_FIFO}" ]; then
14
+        fatal "No DVTM_CMD_FIFO 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
+    args=""
27
+    for i in "$@"; do
28
+        if [ -z "${args}" ]; then
29
+            args="\\'${i}\\'"
30
+        else
31
+            args="${args} \\'${i}\\'"
32
+        fi
33
+    done
34
+
35
+    mkfifo "${PATH_FIFO_IN}" "${PATH_FIFO_OUT}"
36
+
37
+    _echo \
38
+        "create 'fzy ${args} < \\'${PATH_FIFO_IN}\\' > \\'${PATH_FIFO_OUT}\\' 2>&1; echo $? > \\'${PATH_FIFO_RET}\\''" \
39
+        > "${DVTM_CMD_FIFO}"
40
+    cat <&0 > "${PATH_FIFO_IN}" &
41
+    cat < "${PATH_FIFO_OUT}"
42
+
43
+    readonly CODE_RET=$(head -n 1 "${PATH_FIFO_RET}")
44
+
45
+    rm -rf "${PATH_DIR_TMP}"
46
+
47
+    exit "${CODE_RET}"
48
+}
49
+
50
+main "$@"
0 51
new file mode 100755
... ...
@@ -0,0 +1,44 @@
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}"
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 "$@"