I'm using Ubuntu 16.04

I want to open multiple terminal tabs, run commands and set title. I can open multiple tabs with this command:

gnome-terminal --tab -e "command1" --tab -e "command2"

but cannot use --title option as it is not available in this version.

I know mate-terminal can do this, but I want to use gnome-terminal.

I've applied solution posted here and it worked but when i run

gnome-terminal --tab -e "bash -c 'set-title 99;ping'"

It shows:

bash: set-title: command not found
PING ( 56(84) bytes of data.
64 bytes from icmp_seq=1 ttl=128 time=0.425 ms
64 bytes from icmp_seq=2 ttl=128 time=0.353 ms
64 bytes from icmp_seq=3 ttl=128 time=0.335 ms

I also applied the solution suggested here on Unix & Linux SE

I've also read this post setting-terminal-tab-titles but the accepted answer did not solve my issue in 16.04 os or gnome-terminal version 3.18.3 and other solution provides to use other terminal xterm and I want to use gnome-terminal.

  • 3
    Possible duplicate of Setting Terminal tab titles – John N Dec 13 '16 at 8:16
  • Please note, that the core of the problem was that OP wanted to use a function defined in ~/.bashrc within custom script. Thus, the question is only tangentially related to the link John N provided. IMHO this is not a strict duplicate – Sergiy Kolodyazhnyy Dec 29 '16 at 5:27

If you want to use a function stored in ~/.bashrc then source that file in your command:

gnome-terminal --tab -e "bash -c 'source ~/.bashrc;set-title 99;ping'"

You've mentioned in the comments that you plan to use this in a shell script and with multiple gnome-terminal tabs. As a proof of concept, you can use the following script as example:

gnome-terminal --tab -e "bash -c 'printf \"\033]0;TEST1\007\"; sleep 7'" \
               --tab -e "bash -c 'printf \"\033]0;TEST2\007\"; ping -c 4'" \

Instead of bash function, this uses printf and escape sequences directly. Please be mindful of the backslashes.

| improve this answer | |
  • It opens terminal, run command but not set title. – d a i s y Dec 14 '16 at 7:54
  • 2
    @Lucy try this function instead : setTitle() { echo -e "\033]0;$@\007" } – Sergiy Kolodyazhnyy Dec 14 '16 at 7:56
  • means to put this in .bashrc file & remove that old function? – d a i s y Dec 14 '16 at 7:58
  • @Lucy yes. Or you can put both there, just use different names. I just tested it with my own gnome-terminal, works. imgur.com/a/Dto82 – Sergiy Kolodyazhnyy Dec 14 '16 at 7:59
  • 1
    @Lucy perfect ! Well, congrats , we've solved your question. Also final note: you don't have to use it as function, you probably could simply use echo -e "\033]0;TITLE TEXT\007" in your `gnome-terminal command directly. I will make a small addition to my answer, please see it later. Thx – Sergiy Kolodyazhnyy Dec 14 '16 at 8:15

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.