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.
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
}