From: Chris Koeritz Date: Sun, 22 Jan 2017 16:43:27 +0000 (-0500) Subject: still spelunking in terminal title dirt X-Git-Tag: 2.140.90~264 X-Git-Url: https://feistymeow.org/gitweb/?p=feisty_meow.git;a=commitdiff_plain;h=9de2b5a11bd8448b683471cf42156a372813694b still spelunking in terminal title dirt --- diff --git a/scripts/core/launch_feisty_meow.sh b/scripts/core/launch_feisty_meow.sh index d7bbe30f..918935a2 100644 --- a/scripts/core/launch_feisty_meow.sh +++ b/scripts/core/launch_feisty_meow.sh @@ -106,10 +106,13 @@ if [ -z "$LIGHTWEIGHT_INIT" ]; then source "$FEISTY_MEOW_LOADING_DOCK/fmc_core_and_custom_aliases.sh" fi +echo before the new labelling, terminal titles have: +show_terminal_titles + # a minor tickle of the title of the terminal, unless we already have some history. - if ptt_stack_empty; then +# if ptt_stack_empty; then label_terminal_with_info - fi +# fi if [ ! -z "$SHELL_DEBUG" ]; then echo "heavyweight init is done."; fi fi diff --git a/scripts/tty/terminal_titler.sh b/scripts/tty/terminal_titler.sh index 3c01d611..e486b423 100644 --- a/scripts/tty/terminal_titler.sh +++ b/scripts/tty/terminal_titler.sh @@ -3,21 +3,48 @@ source $FEISTY_MEOW_SCRIPTS/core/functions.sh # just saying this is an array... -declare -a PRIOR_TERMINAL_TITLES +#declare -a PRIOR_TERMINAL_TITLES + # set the stack position if not already set. if [ -z "$PTT_STACK_INDEX" ]; then # this variable records where we will push new items on the stack. PTT_STACK_INDEX=0 fi +# returns okay (0) if the stack is empty, or non-zero if not empty. +function ptt_stack_empty() +{ + if [ -z "$PTT_STACK_INDEX" ]; then + # fix the index value. + PTT_STACK_INDEX=0 + true + else + test $PTT_STACK_INDEX -le 0 + fi +} + +# a debugging function that should never have been necessary. +# a little bit furious the restore is failing during regenerate right now. +function show_terminal_titles() +{ + echo terminal title list now has: + local i=${#PRIOR_TERMINAL_TITLES[@]} + if ptt_stack_empty; then + echo the list is empty + else + while ((i--)); do + echo "ent #$i: '${PRIOR_TERMINAL_TITLES[$i]}'" + done + fi +} + # adds an entry into the stack of terminal titles. function push_ptt_stack() { PRIOR_TERMINAL_TITLES[$PTT_STACK_INDEX]="$*" -echo now list has: -echo ${PRIOR_TERMINAL_TITLES[@]} ((PTT_STACK_INDEX++)) echo stack index incremented and now at $PTT_STACK_INDEX +show_terminal_titles } function pop_ptt_stack() @@ -28,15 +55,11 @@ function pop_ptt_stack() ((PTT_STACK_INDEX--)) echo stack index decremented and now at $PTT_STACK_INDEX CURRENT_TERM_TITLE="${PRIOR_TERMINAL_TITLES[$PTT_STACK_INDEX]}" +echo "got the last title as '$CURRENT_TERM_TITLE'" +show_terminal_titles fi } -# returns okay (0) if the stack is empty, or non-zero if not empty. -function ptt_stack_empty() -{ - test $PTT_STACK_INDEX -le 0 -} - # puts a specific textual label on the terminal title bar. # this doesn't consider any previous titles; it just labels the terminal. # the title may not be visible in some window managers. @@ -58,8 +81,12 @@ function save_terminal_title() if [ $? -eq 0 ]; then if [[ "$TERM" =~ .*"xterm".* ]]; then local prior_title="$(xprop -id $WINDOWID | perl -nle 'print $1 if /^WM_NAME.+= \"(.*)\"$/')" + if [ ! -z "$prior_title" ]; then echo "saving prior terminal title as '$prior_title'" - push_ptt_stack "$prior_title" + push_ptt_stack "$prior_title" + else +echo "not saving prior terminal title which was empty" + fi fi fi } @@ -85,7 +112,6 @@ echo "restoring prior terminal title of '$CURRENT_TERM_TITLE'" function label_terminal_with_info() { # we only label the terminal anew if there's no saved title. -# if [ -z "$PRIOR_TERMINAL_TITLE" ]; then if ptt_stack_empty; then pruned_host=$(echo $HOSTNAME | sed -e 's/^\([^\.]*\)\..*$/\1/') date_string=$(date +"%Y %b %e @ %T") @@ -98,7 +124,12 @@ function label_terminal_with_info() set_terminal_title "$new_title" else # restore the former title. - restore_terminal_title +#no restore_terminal_title +echo "showing prior terminal title since there was a prior title!" + pop_ptt_stack +echo "using prior terminal title of '$CURRENT_TERM_TITLE'" + set_terminal_title "$CURRENT_TERM_TITLE" + push_ptt_stack "$CURRENT_TERM_TITLE" fi }