From 99658eda983f29b7b5d41840a7fd1b54d0b17985 Mon Sep 17 00:00:00 2001 From: Bruno Sutic Date: Sun, 15 Feb 2015 14:36:06 +0100 Subject: [PATCH] Enable auto load --- CHANGELOG.md | 1 + resurrect_auto.tmux | 15 +++++++++++++++ scripts/resurrect_auto_restore.sh | 27 +++++++++++++++++++++++++++ scripts/variables.sh | 5 +++++ 4 files changed, 48 insertions(+) create mode 100755 scripts/resurrect_auto_restore.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 5545e14..e9e61c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ### master +- enable automatic environment restore when tmux is started ### v1.0.0, 2015-02-12 - first working version diff --git a/resurrect_auto.tmux b/resurrect_auto.tmux index 2c1143a..9a8cb8f 100755 --- a/resurrect_auto.tmux +++ b/resurrect_auto.tmux @@ -18,12 +18,27 @@ add_resurrect_save_interpolation() { set_tmux_option "status-right" "$new_value" } +# on tmux server start, when tmux.conf is sourced there are no sessions and +# `tmux has` reports 1 +just_started_tmux_server() { + tmux has + [ $? -eq 1 ] +} + +start_auto_restore_in_background() { + $CURRENT_DIR/scripts/resurrect_auto_restore.sh & +} + main() { if supported_tmux_version_ok; then # Don't start saving right after tmux is started. # We wanna give user a chance to restore previous session. set_last_save_timestamp add_resurrect_save_interpolation + + if just_started_tmux_server; then + start_auto_restore_in_background + fi fi } main diff --git a/scripts/resurrect_auto_restore.sh b/scripts/resurrect_auto_restore.sh new file mode 100755 index 0000000..b0da014 --- /dev/null +++ b/scripts/resurrect_auto_restore.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/helpers.sh" +source "$CURRENT_DIR/variables.sh" + +auto_restore_not_disabled() { + local auto_restore_value="$(get_tmux_option "$auto_restore_option" "$auto_restore_default")" + [ "$auto_restore_value" == "on" ] && [ ! -f "$auto_restore_halt_file" ] +} + +fetch_and_run_tmux_resurrect_restore_script() { + # give tmux some time to start and source all the plugins + sleep 1 + local resurrect_restore_script_path="$(get_tmux_option "$resurrect_restore_path_option" "")" + if [ -n "$resurrect_restore_script_path" ]; then + "$resurrect_restore_script_path" + fi +} + +main() { + if auto_restore_not_disabled; then + fetch_and_run_tmux_resurrect_restore_script + fi +} +main diff --git a/scripts/variables.sh b/scripts/variables.sh index 28840c3..e88f872 100644 --- a/scripts/variables.sh +++ b/scripts/variables.sh @@ -9,3 +9,8 @@ auto_save_interval_option="@resurrect-auto-save-interval" # time when the tmux environment was last saved (unix timestamp) last_auto_save_option="@resurrect-auto-save-last-timestamp" + +auto_restore_option="@resurrect-auto-restore" +auto_restore_default="off" + +auto_restore_halt_file="${HOME}/tmux_no_auto_restore"