From e4676918d5444330a31e99267f2c6651f473616f Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Mon, 12 Aug 2024 22:13:35 -0400 Subject: restarting better --- twopane.bash | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) (limited to 'twopane.bash') diff --git a/twopane.bash b/twopane.bash index f1807ea..b53be1a 100755 --- a/twopane.bash +++ b/twopane.bash @@ -44,24 +44,33 @@ split focus bottom resize $BOT_SIZE screen -ln -t "$BOT_TITLE" 0 bash --noprofile --rcfile "$TWOPANE"/bashrc -i -source "$TWOPANE"/screenrc.startpane layout save 0 . -save_screenrc 'startpane' <<. -focus top -screen -ln -t "\$TOP_TITLE" 1 $TOP_CMD -exec .!. sh -c 'socat UNIX-LISTEN:"\$TWOPANE"/socket STDIN,rawer!!STDOUT' -focus top -. - -restart_top() +kill_top() { while screen -p1 -Q info >/dev/null do screen -p1 -X kill done - screen -X source "$TWOPANE"/screenrc.startpane +} + +start_top() +{ + if [ $# -gt 0 ] + then + TOP_CMD=$* + TOP_TITLE="Command: $TOP_CMD" + fi + screen -X focus top + screen -X screen -ln -t "$TOP_TITLE" 1 $TOP_CMD + screen -p1 -X exec .!. sh -c 'exec socat UNIX-LISTEN:"$TWOPANE"/socket STDIN,rawer!!STDOUT' +} + +restart_top() +{ + kill_top + start_top $* } socat_connect() @@ -76,6 +85,7 @@ connect() case $# in 2 ) declare -n std0="$1" std1="$2"; local pid ;; 3 ) declare -n pid="$1" std0="$2" std1="$3" ;; + 0 ) local std0 std1 pid ;; * ) exit 1 ;; esac std0=${3:-200} @@ -113,10 +123,11 @@ start() { if [ "$STARTED" ] then - restart_top + kill_top else STARTED=y fi + start_top $* socat_stty_opts=( rawer echo=0 @@ -208,16 +219,14 @@ our_bashrc_main() set -o pipefail shopt -s lastpipe trap "screen -X quit" EXIT - export PS1="\$BOT_TITLE\$ " - if [ "\$SHOW_SOCAT_ERRORS" ] - then - exec 20>&2 - else - exec 20>/dev/null - fi + export PS1="$BOT_TITLE\\\$ " } save_file bashrc <<. +${TOP_CMD@A} +${BOT_CMD@A} +${TOP_TITLE@A} +${BOT_TITLE@A} $(declare -f) our_bashrc_main \$BOT_CMD -- cgit v1.2.3