diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c9c4eb..ecbed1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog ### master +- do not auto-restore tmux environment if another tmux server is already running + (we don't want to duplicate stuff) - bugfixes for 'tmux auto start' OS X Terminal.app and iTerm scripts ### v2.1.0, 2015-02-18 diff --git a/scripts/resurrect_auto_restore.sh b/scripts/resurrect_auto_restore.sh index c956356..65eba23 100755 --- a/scripts/resurrect_auto_restore.sh +++ b/scripts/resurrect_auto_restore.sh @@ -10,6 +10,33 @@ auto_restore_enabled() { [ "$auto_restore_value" == "on" ] && [ ! -f "$auto_restore_halt_file" ] } +current_tmux_server_pid() { + echo "$TMUX" | + cut -f2 -d"," +} + +all_tmux_processes() { + ps -Ao "command pid" | + \grep "^tmux" +} + +tmux_processes_except_current_server() { + all_tmux_processes | + \grep -v " $(current_tmux_server_pid)$" +} + +number_tmux_processes_except_current_server() { + all_tmux_processes | + \grep -v " $(current_tmux_server_pid)$" | + wc -l | + sed "s/ //g" +} + +another_tmux_server_running() { + # there are 2 tmux processes (current tmux server + 1) on tmux startup + [ "$(number_tmux_processes_except_current_server)" -gt 1 ] +} + fetch_and_run_tmux_resurrect_restore_script() { # give tmux some time to start and source all the plugins sleep 1 @@ -20,7 +47,7 @@ fetch_and_run_tmux_resurrect_restore_script() { } main() { - if auto_restore_enabled; then + if auto_restore_enabled && ! another_tmux_server_running; then fetch_and_run_tmux_resurrect_restore_script fi }