From 889c70fdfb5dbdf2136e7241e9a3bed4f45da90d Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Mon, 19 Aug 2024 09:14:41 -0400 Subject: trivial --- src/twopane.bash | 50 +++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 29 deletions(-) (limited to 'src/twopane.bash') diff --git a/src/twopane.bash b/src/twopane.bash index b353269..2f65211 100755 --- a/src/twopane.bash +++ b/src/twopane.bash @@ -12,7 +12,7 @@ BOT_TITLE=input if [ $# = 0 ] then TOP_CMD="$SHELL -i" - BOT_CMD=background + BOT_CMD=foreground TOP_EXIT=prompt #BOT_CMD=start #TOP_EXIT=restart @@ -68,22 +68,26 @@ screen -ln -t "$BOT_TITLE" 0 bash --noprofile --rcfile "$TWOPANE"/bashrc -i layout save 0 . -check_top() +check_screen_pane() { - screen -p1 -Q info >/dev/null + screen -p "$pane" -Q info >/dev/null } -kill_top() +kill_screen_pane() { - while check_top + while check_screen_pane do - screen -p1 -X kill + screen -p "$pane" -X kill done } -start_top() +start_screen_pane() { - if check_top + declare -g -a PANES + declare -i pane="${1:-1}" + (( pane > 0 )) || return + PANES+=("$pane") + if check_screen_pane "$pane" then return fi @@ -95,18 +99,13 @@ start_top() TOP_TITLE="Command: ${*@Q}" screen -X focus top screen -X screen -ln -t "$TOP_TITLE" 1 "$@" - screen -p1 -X exec .!. sh -c 'exec socat UNIX-LISTEN:"$TWOPANE"/socket STDIN,cfmakeraw!!STDOUT' + screen -p "$pane" -X exec .!. sh -c 'exec socat UNIX-LISTEN:"$TWOPANE"/socket STDIN,cfmakeraw!!STDOUT' } -restart_top() +restart_screen_pane() { - kill_top - start_top "$@" -} - -socat_connect() -{ - socat STDIN!!STDOUT UNIX-CONNECT:"$TWOPANE"/socket,forever + kill_screen_pane + start_screen_pane "$@" } # Start SOCAT if necessary. @@ -120,17 +119,17 @@ socat_connect() connect() { case $# in - 3 | 5 ) + 3 ) declare -n pid="$1" std0="$2" std1="$3" shift 3 ;; - 2 | 4 ) + 2 ) local pid declare -n std0="$1" std1="$2" shift 2 ;; 0 ) - local std0 std1 pid + local pid std0 std1 ;; * ) return 1 @@ -183,18 +182,11 @@ start() foreground "$@" } -background() -{ - start_top "$@" - focus bottom - connect stdin stdout -} - foreground_loop() { while true do - start_top "$@" + start_screen_pane "$@" connect stdin stdout forward disconnect stdin stdout @@ -222,7 +214,7 @@ forwarding() forward() { declare -g FORWARD_PID - if ! check_top + if ! check_screen_pane then echo "$0: Warning: Nothing to forward. Starting anew." >&2 background "$@" -- cgit v1.2.3