8

I've seen various posts about launching gnome-terminal with multiple tabs and the script below is working for me. That is to say, this script will launch gnome-terminal with various working directories or profiles. . .

#!/bin/sh
gnome-terminal \
--tab --working-directory=$HOME/notes  \
--tab --working-directory=$HOME/puppet \
--tab --profile=root-beamish           \
--tab --profile=odyssey                \
--tab --profile=root

... but I'd like to set a unique title for each tab.

In the case where a tab has its own profile I can change the title from within gnome-terminal with Edit | Profiles | (NAME) | Edit | Title and Command and then change "Initial Title" to what I want and "When terminal commands set their own titles" from "Replace initial title" to "Keep initial title". However, I'd rather not create a unique profile for every tab. I'd like a generic solution.

I've tried adding --title='MyTitle' but it doesn't seem to help. I'm using GNOME 2.28.2 on CentOS 6.

1
  • An old question, but I've just solved it on Ubuntu and would like to share my solution. I've written a script which sets a title based on the cwd. Since gnome-terminal now supports per-tab working directories, this script can be wired straight into your ~/.bashrc.
    – halfer
    Apr 13, 2014 at 11:19

4 Answers 4

6

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.

8
  • 1
    Thanks but -t is equivalent to --title which doesn't work for me, as I mentioned in my original post. Nov 16, 2011 at 18:23
  • do you by any chance have a customized, or complex, PS1 to set up your shell prompt? If so, can you try unsetting your PS1, and re-run your script? Nov 16, 2011 at 18:40
  • Unfortunately, that doesn't help either. What Linux distribution are you using, Tim? Nov 17, 2011 at 1:01
  • 1
    -t is working again, running 3.28.1
    – rtaft
    Jan 2, 2019 at 20:44
  • 1
    worked for me : gnome-terminal --tab --active -- bash -c 'bash -c "printf \"\e]2;My Fancy Title\a\""; echo hi; echo hi; echo hi; echo hi; sleep 5'
    – tatsu
    Apr 26, 2019 at 12:29
3

When I did a

$ gnome-terminal -t "MyTitle"

The new terminal had "MyTitle" as the title for a moment and immediately was replaced by the default title.

I went to

Edit | Profiles | (Default) | Edit | Title and Command

And changed "When terminal command set their own titles:" to "Keep initial title", the above command launched a terminal with "MyTitle" as the title.

1
  • The reason this works is because it disables the title being set in a .bashrc as mentioned in the update to the answer above. The downside is that it stops the title being changed globally for all terminals using the profile.
    – ahcox
    Aug 25, 2015 at 12:02
1

GNOME Terminal 3.28.2 (Ubuntu 18.04)

using VTE 0.52.2 +GNUTLS -PCRE2

To make a tab in a directory with a title (running the default shell):

gnome-terminal --tab --working-directory "$SOME_DIR"  --title "Some Title"

If you want multiple tabs, just run this command multiple times.

To run a 0 argument command append -- cmd. e.g

gnome-terminal --tab --title "CALC" -- python

No idea what you do if you want arguments. Note: man gnome-terminal is out of date. gnome-terminal --help is of more help.

0

This creates two tabs, each opened to a directory "foo" or "bar", with tab titles "foo" and "bar"

gnome-terminal --tab -t foo -e 'sh -c "cd foo; sh"' --tab -t bar -e 'sh -c "cd bar; sh"'

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.