21

I don't know if I should ask it here or on unix.stackexchange.com, I found this question here.

My question is similar, I want to change the title of a terminal, I'm using a Debian based distro, Terminator and ZSH, oh-my-zsh the title was fine with bash, but when I moved to ZSH, it shows /bin/zsh as title.

Lynob
  • 5,550
  • 23
  • 66
  • 96

6 Answers6

19

The following worked for me to rename each tab in gnome-terminal. I added the following code to my ~/.zshrc file.

precmd () { print -Pn "\e]0;$TITLE\a" }
title() { export TITLE="$*" }

This creates a title function to rename each tab.

Note, if you are using oh-my-zsh you will need to disable its auto title command. You can do that by uncommenting this line in your ~/.zshrc file:

DISABLE_AUTO_TITLE="true"
Steve
  • 344
17

You set your window title with the xtem escape sequences, in most implementations the first will work best:

echo -en "\e]0;string\a" #-- Set icon name and window title to string
echo -en "\e]1;string\a" #-- Set icon name to string
echo -en "\e]2;string\a" #-- Set window title to string

EDIT: The above only sets the title once. To set zsh to always display the sting in the title you add the following to your .zprofile in your home directory:

case $TERM in
    xterm*)
        precmd () {print -Pn "\e]0;string\a"}
        ;;
esac
6

This should work regardless of the shell used:

printf "\033];%s\07\n" "hello world"
jlliagre
  • 14,369
4

Earlier answers didn't quite work for me. Not without some hiccups (not always refreshed or something). It may be due to the fact I had ZSH, without oh-my-zsh. Fortunately I learned of chpwd, so:

chpwd() {
  [[ -t 1 ]] || return
  case $TERM in
    sun-cmd) print -Pn "\e]l%~\e\\"
      ;;
    *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%~\a"
      ;;
  esac
}
  1. chpwd gets called every time directory is changed.
  2. first time you launch xterm (or others) this doesn't count as directory change, so put chpwd call directly in .zshrc

As I do not use oh-my-zsh, I don't know if it works there, but unless they've changed and overwritten chpwd (in which case you will be overwriting their overwrite :D), it should.

0

It worked for me

TERM_TITLE=$'\e]0;**Terminal**\a'
Toto
  • 19,304
-1

Well you can make a scrip that brings up a window and sets the name to be what you want. Execute the script to bring up the window with your name. You can also set the X,Y position and size of the window. You can make several and have windows named for every occasion.

cliff2310
  • 283