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.

  • 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 '14 at 11:19

4 Answers4

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.

Tim Kennedy
  • 19,697
  • 1
    Thanks but -t is equivalent to --title which doesn't work for me, as I mentioned in my original post. – Philip Durbin Nov 16 '11 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? – Tim Kennedy Nov 16 '11 at 18:40
  • Unfortunately, that doesn't help either. What Linux distribution are you using, Tim? – Philip Durbin Nov 17 '11 at 01:01
  • Actually, I was testing on Solaris 11 Express, which uses gnome-terminal 2.30.2. I've just tried it with ubuntu and found exactly the same behavior you have. I'll update the answer with what I found. – Tim Kennedy Nov 17 '11 at 02:51
  • "Option "-t" is no longer supported in this version of gnome-terminal"

    It says this when I specify this option.

    – Calmarius Oct 31 '17 at 11:47
  • rumor has it that -t may be coming back, but I updated the answer with a solution that works (with gnome-terminal version 3.18.3 on ubuntu 16.04), but is ugly. – Tim Kennedy Nov 01 '17 at 14:26
  • 1
    -t is working again, running 3.28.1 – rtaft Jan 02 '19 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 '19 at 12:29
4

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.

Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232
kishore
  • 41
  • 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 '15 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.

plswork04
  • 111
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"'