X-Git-Url: https://feistymeow.org/gitweb/?p=feisty_meow.git;a=blobdiff_plain;f=scripts%2Ftty%2Fterminal_titler.sh;h=7ced5c9fc83caa8093a303fb5406a936b29c39aa;hp=f32b10b5707ff2d2498492ad3f19a9bba75df827;hb=564408342570fb0cb291d7a0680f90297f24b7bd;hpb=5857529277c4b7f0ed96932be26020f28332a05c diff --git a/scripts/tty/terminal_titler.sh b/scripts/tty/terminal_titler.sh index f32b10b5..7ced5c9f 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. @@ -33,7 +33,7 @@ function set_terminal_title() { apply_title_to_terminal $* -#tricky tries to get it to be available when we ask for it in get_terminal_title +#tricky attempts to get it to be available when we ask for it in get_terminal_title sync # echo -n @@ -45,28 +45,33 @@ function set_terminal_title() # echoes back the current title on the terminal window, if we can acquire it. function get_terminal_title() { - local term_title_found + # this is an important value now; it is checked for in save_terminal_title. + local term_title_found="unknown" # 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 + # gnome-terminal doesn't set WINDOWID currently, but we can work around this. + if [[ -z "$WINDOWID" && ! -z "$(which xwininfo)" ]]; then +#not good solution. term_title_found="$(xprop -id $(xdotool getactivewindow) | perl -nle 'print $1 if /^WM_NAME.+= \"(.*)\"$/')" + term_title_found=$(xwininfo -id $(xprop -root | awk '/NET_ACTIVE_WINDOW/ { print $5; exit }') | awk -F\" '/xwininfo:/ { print $2; exit }') + # check if we're actually using xterm *and* that we have a window ID. + elif [[ "$TERM" =~ .*"xterm".* && ! -z "$WINDOWID" ]]; then term_title_found="$(xprop -id $WINDOWID | perl -nle 'print $1 if /^WM_NAME.+= \"(.*)\"$/')" fi fi - echo "$term_title_found" + echo -n "$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 + if [ "$title" != "unknown" ]; then # there was a title, so save it. if [ ! -z "$DEBUG_TERM_TITLE" ]; then - echo "saving prior terminal title as '$prior_title'" + echo "saving prior terminal title as '$title'" fi - export PRIOR_TERMINAL_TITLE="$prior_title" + export PRIOR_TERMINAL_TITLE="$title" else # the terminal had no title, or we couldn't access it, or there's no terminal. if [ ! -z "$DEBUG_TERM_TITLE" ]; then @@ -101,7 +106,7 @@ function label_terminal_with_info() fi pruned_host=$(echo $HOSTNAME | sed -e 's/^\([^\.]*\)\..*$/\1/') date_string=$(date +"%Y %b %e @ %T") - user=$USER + user="$(logname)" if [ -z "$user" ]; then # try snagging the windoze name. user=$USERNAME