1 #!/bin/zsh
 2 
 3 TMUX_MOD=`[ -z "$TMUX" ] && echo 1`
 4 TMUX_TERM_LIST=(Apple_Terminal iTerm.app rxvt-unicode-256color xterm-256color)
 5 
 6 _check_term_app() {
 7     TP=''
 8     if [ -n "$TERM_PROGRAM" ];then
 9         TP=$TERM_PROGRAM
10     elif [ -n "$TERM" ]; then
11         TP=$TERM
12     else
13         echo 'Either $TERM or $TERM_PROGRAM is set, cannot determine terimnal name.'
14         return 1
15     fi
16 
17     res=${TMUX_TERM_LIST[@]/${TP}/yes}
18     if [ -n "`echo $res | grep 'yes'`" ]; then
19         return 0
20     else
21         return 1
22     fi
23 }
24 
25 DEFAULT_SESSION=new
26 CODE="
27 _timeout() {
28     echo $DEFAULT_SESSION
29     exit
30 }
31 
32 _main() {
33     SELECT_CMD
34 }
35 "
36 
37 _start_tmux(){
38     # If timeout script doesn't exist then skip starting tmux
39     if [ ! -x ~/bin/timeout ]; then
40         echo Warning: ~/bin/timeout doesn\'t exist
41         return
42     fi
43 
44     # Start tmux if no tmux is running under current shell
45     if [ "`_check_term_app && echo 1`" = "1" -a "z$TMUX_MOD" = "z1" ];then
46         session_list=`tmux list-sessions | sed "s/.*/'&'/g" | tr '\n' ' '`
47         if [ -n "$session_list" ];then
48             echo "Select an session, default is $DEFAULT_SESSION , enter q to cancel starting tmux"
49             SELECT_CMD="
50             select session in ${session_list[*]}; do
51                 target=\`echo \$session | awk '{print \$1}'\`
52                 if [ -n \"\$session\" ];then
53                     echo \$target
54                 else
55                     echo \$REPLY
56                 fi
57                 break
58             done
59             "
60 
61             CODE=${CODE/SELECT_CMD/$SELECT_CMD}
62             ~/bin/timeout 3 "$CODE" > /tmp/.zsh_start_$$
63             target=`cat /tmp/.zsh_start_$$`
64             rm -f /tmp/.zsh_start_$$
65         fi
66 
67         if [ "$target" = 'q' -o "$target" = "Q" ];then
68             return 0
69         fi
70         ## Open tmux
71         cmd='tmux -2'
72         if [ -n "$target" -a "$target" != "new" ];then
73             cmd="$cmd attach -t $target"
74         fi
75 
76         if [ -z "`which tmux`" ];then
77             echo Tmux is not found. Try to install it first...
78             echo Try installing using 'sudo apt-get install tmux...'
79             sudo apt-get install tmux
80         fi
81 
82         eval "$cmd" || echo "Tmux exited abnormally. Exit code $?"
83         exit 0
84     fi
85 }
86 
87 _start_tmux