From: Chris Koeritz Date: Tue, 14 Nov 2017 20:56:51 +0000 (-0500) Subject: working on terminal title bug X-Git-Tag: 2.140.100^2~13^2~3 X-Git-Url: https://feistymeow.org/gitweb/?a=commitdiff_plain;h=7f6ea80a47221a260c50641f4e6b29f6fa78db9f;p=feisty_meow.git working on terminal title bug --- diff --git a/scripts/tty/terminal_titler.sh b/scripts/tty/terminal_titler.sh index 8bc6ccd3..36086021 100644 --- a/scripts/tty/terminal_titler.sh +++ b/scripts/tty/terminal_titler.sh @@ -4,7 +4,7 @@ source "$FEISTY_MEOW_SCRIPTS/core/functions.sh" source "$FEISTY_MEOW_SCRIPTS/core/common.alias" # uncomment this to get extra noisy debugging. -#export DEBUG_TERM_TITLE=true +export DEBUG_TERM_TITLE=true # puts a specific textual label on the terminal title bar. # this doesn't consider any previous titles; it just labels the terminal. @@ -31,28 +31,40 @@ function apply_title_to_terminal() function set_terminal_title() { apply_title_to_terminal $* + # we're enforcing a new title from here on. + unset PRIOR_TERMINAL_TITLE save_terminal_title } -# reads the current terminal title, if possible, and saves it to our record. -function save_terminal_title() +# echoes back the current title on the terminal window, if we can acquire it. +function get_terminal_title() { + local term_title_found="" # save the former terminal title if we're running in X with xterm. which xprop &>/dev/null if [ $? -eq 0 ]; then # make sure we're actually using xterm *and* that we have a window ID. if [[ "$TERM" =~ .*"xterm".* && ! -z "$WINDOWID" ]]; then - local prior_title="$(xprop -id $WINDOWID | perl -nle 'print $1 if /^WM_NAME.+= \"(.*)\"$/')" - if [ ! -z "$prior_title" ]; then - if [ ! -z "$DEBUG_TERM_TITLE" ]; then - echo "saving prior terminal title as '$prior_title'" - fi - export PRIOR_TERMINAL_TITLE="$prior_title" - else - if [ ! -z "$DEBUG_TERM_TITLE" ]; then - echo "not saving prior terminal title which was empty" - fi - fi + term_title_found="$(xprop -id $WINDOWID | perl -nle 'print $1 if /^WM_NAME.+= \"(.*)\"$/')" + fi + fi + echo "$term_title_found" +} + +# reads the current terminal title, if possible, and saves it to our record. +function save_terminal_title() +{ + local title="$(get_terminal_title)" + if [ ! -z "$title" ]; then + # there was a title, so save it. + if [ ! -z "$DEBUG_TERM_TITLE" ]; then + echo "saving prior terminal title as '$prior_title'" + fi + export PRIOR_TERMINAL_TITLE="$prior_title" + else + # the terminal had no title, or we couldn't access it, or there's no terminal. + if [ ! -z "$DEBUG_TERM_TITLE" ]; then + echo "not saving prior terminal title which was empty" fi fi }