Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want the name of command running , e.g unzip to be visible through the title bar of gnome-terminal , but it seems to be impossible , if the application running doesn't set a title explicitly , even though I choose 'Replace initial title' option in the profile dialog.

share|improve this question
up vote 7 down vote accepted

This is a more complete solution actually taking care of bash-completion spamming garbage.

To be clear: I did nothing on my own here but research. All credit goes to Marius Gedminas.

This works perfectly for me with Gnome-Terminal/Terminator (put it in your .bashrc or somewhere that's getting sourced)

# If this is an xterm set the title to user@host:dir
case "$TERM" in
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

    # Show the currently running command in the terminal title:
        case "$BASH_COMMAND" in
                # The command is trying to set the title bar as well;
                # this is most likely the execution of $PROMPT_COMMAND.
                # In any case nested escapes confuse the terminal, so don't
                # output them.
                echo -ne "\033]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}\007"
    trap show_command_in_title_bar DEBUG

Also this is a cross-post because I just found out about it and wanted to share and I think it's useful here as well.

share|improve this answer
Don't do this without guarding the trap with a test like [ -n "$PS1" ] or your escape sequences will baffle scripts! – Martin Dorey May 12 at 5:22

This has been sort of answered here.

trap 'command' DEBUG makes bash run command before every command.

echo -ne "\033]0;Title\007" changes the title to "Title" and $BASH_COMMAND contains the command being run. Combining these we get

trap 'echo -ne "\033]0;$BASH_COMMAND\007" > /dev/stderr' DEBUG

Then we just have to reset the title after we complete the command. I did this by setting $PS1 to change the title to the current path.

tl;dr: Add these two lines (in this order, otherwise I got a garbled prompt) to the bottom of ~/.bashrc

trap 'echo -ne "\033]0;$BASH_COMMAND\007" > /dev/stderr' DEBUG

Edit: Your $PS1 might already change the title, in which case only the last line is needed.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.