--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/zshrc.d/30-functions-tmux.zrc Sun Aug 23 11:50:43 2015 +0200
@@ -0,0 +1,44 @@
+
+# sss
+# Reattach a GNU Screen session, or a TMux session.
+#
+# For GNU Screen a custom lock tool (LOCKPRG) can be used
+# if ~/bin/ttylocker exists or TTYLOCKER is set (not yet
+# implemented for tmux).
+# Mikael Berthe, 2015-08
+
+function sss() {
+ local TTYLOCKER="${TTYLOCKER:-$HOME/bin/ttylocker}"
+ local SCREENBIN="/usr/bin/screen"
+ local TMUXBIN="/usr/bin/tmux"
+
+ if [[ -x $SCREENBIN ]]; then
+ $SCREENBIN -q -list
+ local r=$?
+ if (( r == 11 )); then
+ # There is 1 usable Screen session, let's go
+ [[ -x "$TTYLOCKER" ]] && export LOCKPRG="$TTYLOCKER"
+ exec $SCREENBIN -r -x
+ elif (( r > 11 )); then
+ # There are several usable Screen sessions, heh
+ echo "There are several usable Screen sessions..."
+ return
+ fi
+ fi
+
+ # No usable GNU/Screen session, let's try tmux then.
+ if [[ -x "$TMUXBIN" ]]; then
+ # Number of tmux sessions
+ integer n=$($TMUXBIN list-sessions 2>/dev/null | wc -l)
+ if (( n == 1 )); then
+ # Attach the session
+ exec $TMUXBIN attach # -t "$($TMUXBIN list-session -F '#{session_id}')"
+ elif (( n > 1 )); then
+ # There are several usable tmux sessions, heh
+ echo "There are several usable tmux sessions..."
+ return
+ fi
+ fi
+
+ echo "No terminal multiplexer session found."
+}