From 334230d43a4c84b81f3c5aba6fc849ff34892be1 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Mon, 26 Aug 2024 13:32:18 -0400 Subject: restarting like a champ --- src/twopane.bash | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/src/twopane.bash b/src/twopane.bash index c266828..f3a15e1 100755 --- a/src/twopane.bash +++ b/src/twopane.bash @@ -20,10 +20,10 @@ kill_tty_forward() BOT_SIZE=8 BOT_TITLE=input -DO_RESTART=y DO_RESTART= DO_START= DO_START=y +DO_RESTART=y if [ $# = 0 ] then @@ -352,11 +352,7 @@ echo_sender() restart_tty_forward() { - { - kill -INT %tty_forward - disown %tty_forward - } &>/dev/null - + detach with_screen_pane 1 start_screen_pane "$@" focus bottom connect @@ -382,14 +378,13 @@ detach() kill -INT %tty_forward disown %tty_forward } &>/dev/null - focus bottom } restart() { attach "$@"; } start() { attach "$@"; } foreground() { attach "$@"; } - twopane() { attach "$@"; } +forward() { attach "$@"; } quit() { @@ -426,30 +421,24 @@ prompt_command() return fi - local job jobnew - if job=$(jobs -n %tty_forward 2>/dev/null) - then - jobnew=y - else - job=$(jobs %tty_forward 2>/dev/null) - jobnew= - fi - - if [ ! "$job" ] + local job + if ! { job=$(jobs %tty_forward 2>/dev/null) && [ "$job" ]; } then finally 'start' : return fi - if [ "$jobnew" ] - then - read _ jobstatus _ <<< "$job" - if [ "$jobstatus" = 'Running' ] - then + read _ jobstatus _ <<< "${job?Internal error: line $LINENO}" + case "${jobstatus?Internal error: line $LINENO}" in + Running ) jobs -x finally 'attach' kill -CONT %tty_forward - fi - return - fi + ;; + Terminated | Interrupt ) + finally 'start' : + ;; + Stopped ) + ;; + esac } SIGINT() -- cgit v1.2.3