Use the -t
option. (see gnome-terminal --help-terminal-options
)
gnome-terminal \
--tab -t "notes" --working-directory=$HOME/notes \
--tab -t "puppet" --working-directory=$HOME/puppet \
--tab -t "beamish" --profile=root-beamish \
--tab -t "odyssey" --profile=odyssey \
--tab -t "root" --profile=root
-------- updated at 2011-11-15 22:00:00 --------
So... that worked for me on Solaris 11 Express, with gnome-terminal 2.30.2.
Since then, I've been able to test it on Ubuntu 11.04 (Natty), which uses 2.32.1, and found exactly the same behavior as you.
In the case of Ubuntu, I was able to track it to the ubuntu .bashrc
file. In particular, the section that looks like:
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
In this case, the PS1 variable is being expanded for terminal types matching xterm*
and rxvt*
.
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
specifically the part between PS1="\[\e]0;
and \a\]
. Those get turned into the window title.
Once I commented out that whole case
statement, the behavior of gnome-terminal with the -t
option worked as expected. I'll see if I can find a CentOS 6 box to test this with, too.
-------- updated at 2017-11-1 09:38:00 --------
So it looks like more recent versions of Gnome-Terminal have made away with some useful features, like the simple -t
option to set terminal titles.
It is still possible to set terminal titles at runtime, it's just ugly as hell now. You can use printf
or echo
in the command to effect a title.
For example:
To start a terminal window with 1 tab, titled 'My Fancy Title' using printf
:
gnome-terminal --tab -e 'bash -c "printf \"\e]2;My Fancy Title\a\"; bash -i"'
To start a terminal window with 2 tabs, one running top, and one with a title, using echo
:
gnome-terminal \
--tab -e 'bash -c "echo -ne \"\033]0;my tab running top\007\"; top"' \
--tab -e 'bash -c "echo -ne \"\033]0;My Fancy Title\007\"; bash -i"'
This does at least offer an option for setting the terminal title at runtime.
See this post for an option to put a simple function in your ~/.bashrc
to allow for setting and resetting the title at will.
A very simple workaround for you would be including a function in your ~/.zshrc
that remembers the working directory and changes into it when opening zsh:
cd $(<>/dev/shm/$USER-pwd)
__cd(){
\cd "$@"
pwd >/dev/shm/$USER-pwd
}
alias cd=__cd
We use /dev/shm instead of /tmp to avoid disk writes, although /tmp could already be a tmpfs on your system. \cd
is used to avoid a fork bomb.
If you would like this feature for gnome-terminal only, you could include an if statement to check your current terminal or active window. Also, if you are concerned that other users might find out what was your last directory, you could modify the permissions for $USER-pwd
with chmod
:
if xprop -id $(xprop -root 32x ' $0' _NET_ACTIVE_WINDOW | awk '{print $NF}') WM_CLASS | grep -q gnome-terminal; then
cd $(<>/dev/shm/$USER-pwd)
chmod 600 /dev/shm/$USER-pwd
__cd(){
\cd "$@"
pwd >/dev/shm/$USER-pwd
}
alias cd=__cd
fi
Best Answer
Create a function in
~/.bashrc
:Then use your new command to set the terminal title. It works with spaces in the name too
It is possible to subsequently use
set-title
again (original PS1 is preserved asORIG
).