How to change Terminator title terminal title, ZSH on Debian?

25,763

Solution 1

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

Solution 2

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"

Solution 3

This should work regardless of the shell used:

printf "\033];%s\07\n" "hello world"

Solution 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.

Share:
25,763

Related videos on Youtube

GNT
Author by

GNT

Updated on September 18, 2022

Comments

  • GNT
    GNT over 1 year

    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.

    • GNT
      GNT over 10 years
      @DaniëlW.Crompton really? it is a dupe? if so i'll close it right now, i linked to that question, so i know it is there, but didn't know it's a dupe because I'm using a different OS and emulator
    • Daniël W. Crompton
      Daniël W. Crompton over 10 years
      Did you try out what was advised in the question you linked to?
    • GNT
      GNT over 10 years
      @DaniëlW.Crompton yes, echo -ne "\e]1;this is the title\a and echo -ne "\e]1;$PWD\a" dont give errors but don't work, i tried unchecking all unless im missing something
    • Daniël W. Crompton
      Daniël W. Crompton over 10 years
      Did you try echo -ne "\e]0;$PWD\a" with a 0 rather than 1?
  • GNT
    GNT over 10 years
    i said earlier echo -ne "\e]0;$PWD\a" works but when i exit shell, it stops working... I tried you typed in the answer and i get zsh: command not found: stringa and zsh: command not found: e]1 and so on, all of them
  • Daniël W. Crompton
    Daniël W. Crompton over 10 years
    Updated the answer
  • Rakesh Gopal
    Rakesh Gopal over 7 years
    DISABLE_AUTO_TITLE="true" did the trick for me. Thank you.
  • Nathan Basanese
    Nathan Basanese about 6 years
    // , Got anything a bit more specific?
  • cliff2310
    cliff2310 about 6 years
    It has been over 12 years since I wrote those scripts. I do not want to give bad information but I think that all that was done using the options of xterm. Check the MAN page for xterm for more information. I may have the scripts somewhere, but Harvey has left all of my old disk in a pile where they were dumped to get them out of harms way. When repairs are complete I may be able to update this.
  • Maksym Ganenko
    Maksym Ganenko over 5 years
    To replace home directory within $PWD with ~ I used precmd () {print -Pn "\e]0;${PWD/$HOME/\~}\a"} (Z shell)