author | Mikael Berthe <mikael@lilotux.net> |
Sun, 23 Aug 2015 11:50:43 +0200 | |
changeset 31 | c293e65d905f |
child 32 | 0df5ad40ffb9 |
permissions | -rw-r--r-- |
31
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
1 |
|
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
2 |
# sss |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
3 |
# Reattach a GNU Screen session, or a TMux session. |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
4 |
# |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
5 |
# For GNU Screen a custom lock tool (LOCKPRG) can be used |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
6 |
# if ~/bin/ttylocker exists or TTYLOCKER is set (not yet |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
7 |
# implemented for tmux). |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
8 |
# Mikael Berthe, 2015-08 |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
9 |
|
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
10 |
function sss() { |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
11 |
local TTYLOCKER="${TTYLOCKER:-$HOME/bin/ttylocker}" |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
12 |
local SCREENBIN="/usr/bin/screen" |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
13 |
local TMUXBIN="/usr/bin/tmux" |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
14 |
|
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
15 |
if [[ -x $SCREENBIN ]]; then |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
16 |
$SCREENBIN -q -list |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
17 |
local r=$? |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
18 |
if (( r == 11 )); then |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
19 |
# There is 1 usable Screen session, let's go |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
20 |
[[ -x "$TTYLOCKER" ]] && export LOCKPRG="$TTYLOCKER" |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
21 |
exec $SCREENBIN -r -x |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
22 |
elif (( r > 11 )); then |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
23 |
# There are several usable Screen sessions, heh |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
24 |
echo "There are several usable Screen sessions..." |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
25 |
return |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
26 |
fi |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
27 |
fi |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
28 |
|
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
29 |
# No usable GNU/Screen session, let's try tmux then. |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
30 |
if [[ -x "$TMUXBIN" ]]; then |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
31 |
# Number of tmux sessions |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
32 |
integer n=$($TMUXBIN list-sessions 2>/dev/null | wc -l) |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
33 |
if (( n == 1 )); then |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
34 |
# Attach the session |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
35 |
exec $TMUXBIN attach # -t "$($TMUXBIN list-session -F '#{session_id}')" |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
36 |
elif (( n > 1 )); then |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
37 |
# There are several usable tmux sessions, heh |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
38 |
echo "There are several usable tmux sessions..." |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
39 |
return |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
40 |
fi |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
41 |
fi |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
42 |
|
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
43 |
echo "No terminal multiplexer session found." |
c293e65d905f
Add function sss (reattaches screen/tmux sessions)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
44 |
} |