19

I can change the name of a window with Ctrl-a Shift-a. Instead of editing several window names by hand, is there a way to have them automatically named after the current directory?

  • Which shell do you use? – marco Jan 18 '11 at 20:01
  • I'm using bash. – liewl Jan 18 '11 at 20:12
21

Make your shell change the window title every time it changes directory, or every time it displays a prompt.

For your ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

Or for your ~/.zshrc (for zsh users):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

For more information, look up under Dynamic titles in the Screen manual, or under “Titles (naming windows)” in the man page.

  • I copypasted the bash one on my .bashrc and it is giving off these errors: bash: PROMPT_COMMAND: line 0: syntax error near unexpected token ;' bash: PROMPT_COMMAND: line 0: ;screen_set_window_title' – liewl Jan 19 '11 at 5:40
  • @David: Sorry, the point was to accumulate commands in PROMPT_COMMAND if there was already something, but I had the components in the wrong order. – Gilles Jan 19 '11 at 8:08
  • 2
    Great trick @Gilles. For those who like to keep window titles short, you can drop the full path and only keep the basename. Just replace $HOME/*) HPWD="~${HPWD#$HOME}";; with *) HPWD=`basename "$HPWD"`;; – user6176 Mar 30 '11 at 21:32
0

You can put this into the .bashrc to change the terminal name (window name) to the last directory (or file name) that you are in (working on).

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

more described here: link

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.