X-Git-Url: http://git.iain.cx/?p=profile.git;a=blobdiff_plain;f=.profile.d%2Fprompt.bashrc;h=6398e3dcbb50770cbfc8f8df460103ecfa9b6f19;hp=cf133c7725cbc8835751151d175e4817621f833d;hb=8a304871323fd8c0ab81b81a9082f07d03a1fa0c;hpb=d72851316b4bfb4c3ff56030cefb621df51a5b90 diff --git a/.profile.d/prompt.bashrc b/.profile.d/prompt.bashrc index cf133c7..6398e3d 100644 --- a/.profile.d/prompt.bashrc +++ b/.profile.d/prompt.bashrc @@ -1,15 +1,18 @@ -# $Id$ -# -# Set the title of an xterm to the hostname. -# - -SSH_FORWARDED=$(get_remote_ip -n) +# Set the title of an xterm to the hostname unless the remote IP is matched by +# a regular expression in ~/.ssh/forwarded. +SSH_FORWARDED=$(get_remote_ip) if [ ! -z "$SSH_FORWARDED" ]; then - if [ ! "$SSH_FORWARDED" = "62.189.242.202" -a ! "$SSH_FORWARDED" = "62.189.241.202" -a ! "$SSH_FORWARDED" = "193.128.72.68" -a ! "$SSH_FORWARDED" = "localhost" ]; then - SSH_FORWARDED=" (from $SSH_FORWARDED)" - else + if [ "$SSH_FORWARDED" = "localhost" ]; then SSH_FORWARDED= + elif [ -f ~/.ssh/forwarded ]; then + for forwarded in $(< ~/.ssh/forwarded); do + if echo "$SSH_FORWARDED" | grep "$forwarded" &>/dev/null; then + SSH_FORWARDED= + fi + done + unset forwarded fi + [ ! -z "$SSH_FORWARDED" ] && SSH_FORWARDED=" (from $(get_remote_ip -n))" fi # Unscientific check for grid jobs. @@ -24,13 +27,22 @@ info="$HOSTNAME$SSH_FORWARDED" vimchild=" [vim]" if ps -o comm= -p $PPID 2>/dev/null | grep '^vim*$' &>/dev/null; then # Clear [vim] when exiting. - trap "echo -ne '\\033]0;$info\\007'" exit + trap "echo -ne '\\033]0;$info\\033\\0134'" exit info="$info$vimchild" fi -blank=$(echo "$info" | sed 's/./ /g') if [ "${TERM##screen}" = "$TERM" ]; then - export PROMPT_COMMAND="echo -ne '\033]0;$info\007\r$blank \r'" + export PROMPT_COMMAND="echo -ne '\033]0;$info\033\0134\r\033[K'" else - export PROMPT_COMMAND='echo -ne "\033k\033\\"' + export PROMPT_COMMAND='echo -ne "\033k\033\0134"' fi unset blank info vimchild SSH_FORWARDED + +# Actual dtterm barfs on escape sequences. +if [ "$TERMINAL_EMULATOR" = "dtterm" ]; then + unset PROMPT_COMMAND +fi + +# As does screen on an ancient Solaris host. +if [ -n "$OLDSOLARIS" -a ! "${TERM##screen}" = "$TERM" ]; then + unset PROMPT_COMMAND +fi