How can I set the window title in Bash? I do know that in Windows Batch it is TITLE.
7 Answers
Here is a nice function to do it:
# Allow the user to set the title.
function title {
PROMPT_COMMAND="echo -ne \"\033]0;$1 (on $HOSTNAME)\007\""
}
Put that in your ~/.bashrc, then type "title whatever" to set the title. If you want to get rid of the hostname, remove "(on $HOSTNAME)".
Edit: make sure to . ~/.bashrc (aka source ~/.bashrc) before trying, of course.
- 43,504
- 266
I have this VT100 escape sequence defined in .bashrc.
PS1_SET_TITLE='\[\e]0;\u@\h:\w\a\]'
PS1="${PS1_SET_TITLE}" my other prompt components
export PS1
For my home directory it displays alex@host:~, when I change directories, they are updated in window title.
Works with CYGWIN and PuTTY terminal sessions. I usually don't run X, but when I did it worked fine with XTerm.
Read PROMPTING section of bash man page on available switches for PS commands, e.g \u \h \w.
Here is some code to set window title in bash - an improved version, that doesn't remove
previous prompt string (and changes to it are temporary), of another answer (quoted below):
function title {
export WTITLE=$1
}
PS1_old="$(echo $PS1 | sed -En 's/(.+)\\e](.+)/\1\\\\e]\2/g; s/(.+ )(.+)/\1\\n\2/p')";
_PS1='\[\e]0;$WTITLE: \w\a\]';_PS1+="$PS1_old ";export PS1=$_PS1;
# A command to use in bash (shell) scripts, replaces
# the above function that is for a "~/.bashrc" file:
export WTITLE="[for example \u@\h, insert title here]"
If you are using "mintty" (the default terminal of Cygwin since end 2011),
add the following in.bashrc:function title { export WINDOWTITLE=$1 } export PS1='\[\e]0;$WINDOWTITLE:\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]~\w\[\e[0m\]\n\$'and reopen your terminal and type "title ThisIsMyTitle"
- quote from this answer.
- 125
I ended up writing a function title. It supports echo-like escape sequences and -e/-E (although I haven't tested escapes) by passing the arguments directly to echo.
title() {
echo -ne "\e]0;"
echo -n "$@"
echo -ne "\a"
}
This can be placed directly in .bashrc.
If you are using "mintty" (the default terminal of Cygwin since end 2011), add the following in .bashrc :
function title {
export WINDOWTITLE=$1
}
export PS1='\[\e]0;$WINDOWTITLE:\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]~\w\[\e[0m\]\n\$'
and reopen your terminal and type "title ThisIsMyTitle"
- 161
I use simple title bash script that lies in PATH:
#!/usr/bin/env bash
echo -ne "\033]0;$@\007"
Usage:
title My favourite window title
Works once, so if any other program changes the title - you need to run the script once again.
- 3,550
We need more information: The answer will depend on what terminal you're using, not what shell. Is this in an xterm? An rxvt? A cygwin window on windows? Etc.
(danben's answer works for xterms, and probably for rxvt terminals)