more like a fix now for terminal title
[feisty_meow.git] / scripts / tty / terminal_titler.sh
index f32b10b5707ff2d2498492ad3f19a9bba75df827..7ced5c9fc83caa8093a303fb5406a936b29c39aa 100644 (file)
@@ -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