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