# HG changeset patch # User Augie Fackler # Date 1668441755 18000 # Node ID 852565046ed033a2ddf17d6c850b0ef9eb366647 # Parent b0fa9e7cadac7dff1179382b3ac62714a9aea086 zsh: fidget with screen/tmux message This should speed things up very slightly by avoiding some `grep` action in the common case of no detached screens/tmuxes. diff --git a/.zshrc b/.zshrc --- a/.zshrc +++ b/.zshrc @@ -10,26 +10,33 @@ if [ ! "$SHOWED_SCREEN_MESSAGE" = "true" # Use /bin/which explicitly because we have a shell function # that confuses the zsh built-in which. if sh -c 'which screen' 2> /dev/null > /dev/null; then - detached_screens=`screen -list | grep Detached | sed -e 's/ (Detached)//'` - if [ ! -z "$detached_screens" ]; then + SCREENS_OUTPUT="$(screen -list)" + if [[ "${SCREENS_OUTPUT}" =~ Detached ]] ; then + detached_screens=`echo "${SCREENS_OUTPUT}" | grep Detached | sed -e 's/ (Detached)//'` echo "+---------------------------------------+" echo "| Detached screens are available: |" echo "$detached_screens" echo "+---------------------------------------+" fi + unset SCREENS_OUTPUT + unset detached_screens fi export SHOWED_SCREEN_MESSAGE="true" fi if [ ! "$SHOWED_TMUX_MESSAGE" = "true" ]; then if which tmux 2> /dev/null > /dev/null; then - detached_screens=$(tmux ls 2> /dev/null | grep -v attached) + detached_screens="$(tmux ls 2> /dev/null)" + if [ ! -z "$detached_screens" ]; then + detached_screens="$(echo "$detached_screens" | grep -v attached)" + fi if [ ! -z "$detached_screens" ]; then echo "+-----------------------------------------------------------+" echo "| Detached tmux sessions are available: |" echo "$detached_screens" echo "+-----------------------------------------------------------+" fi + unset detached_screens fi export SHOWED_TMUX_MESSAGE="true" fi