Rework how screen is handled upon login.

This commit is contained in:
Darren 'Tadgy' Austin 2021-03-27 09:15:19 +00:00
commit abca6296c0
2 changed files with 29 additions and 31 deletions

View file

@ -38,13 +38,9 @@ unset PLATFORM
# Screen.
hash screen >/dev/null 2>&1 && {
# Reattach existing screens.
screen_attach
# Output some screen info.
export SCREENDIR="$HOME/.screen-${HOSTNAME%%.*}"
if [[ ! -e ~/.hushlogin ]]; then
if [[ ! -z "$STY" ]]; then
if [[ -n "$SSH_TTY" ]]; then
if [[ -n "$STY" ]]; then
echo "Screen $STY, window $WINDOW."
echo
else
@ -58,6 +54,33 @@ hash screen >/dev/null 2>&1 && {
fi
unset SCREENS
fi
elif [[ -n "$STY" ]]; then
echo "Screen $STY, window $WINDOW."
echo
else
TTY="$(tty | cut -d/ -f3-)"
SCREENS="$(screen -list | fgrep "${HOSTNAME%%.*}" | fgrep "${TTY//\//-}")"
case "$(echo "${SCREENS:--n}" | wc -l)" in
0)
# No screens found - start a new instance.
screen
;;
1)
# Just one screen - reconnect if it's not dead.
if (( $(echo "$SCREENS" | grep "Dead" | wc -l) == 1 )); then
echo "Found dead screen for $TTY:"
echo "$SCREENS" | sed -e 's/^/ /g'
else
screen -dr "${TTY//\//-}.${HOSTNAME%%.*}"
fi
;;
*)
# Multiple screens - output a list
echo "Multiple screens found for $TTY:"
echo "$SCREENS" | sed -e 's/^/ /g'
;;
esac
unset SCREENS
fi
}