Terminal GNOME - nome do processo no título da guia

9

Como posso colocar o nome atual do processo em execução no título da guia Terminal do GNOME (ou na barra de título quando há apenas uma guia)?

- ATUALIZAÇÃO -

Para esclarecer, quero que o título da guia seja atualizado quando eu executar um processo, por exemplo:

# title is currently "bash"
$ find / -name foo # while searching for foo, title is "find"
$ # title is once again "bash"
$ less /proc/cpuinfo # title changes to "less"
$ man ls # title changes to man
$ # title returns to "bash"
    
por adurity 16.09.2009 / 23:20

4 respostas

8

Encontrei. Este site fornece uma boa explicação para uma solução.
No seu bashrc, seria parecido com:

case "$TERM" in
xterm*|rxvt*)
    set -o functrace
    trap 'echo -ne "\e]0;$BASH_COMMAND
case "$TERM" in
xterm*|rxvt*)
    set -o functrace
    trap 'echo -ne "\e]0;$BASH_COMMAND%pre%7"' DEBUG
    PS1="\e]0;\s%pre%7$PS1"
    ;;
*)
    ;;
esac
7"' DEBUG PS1="\e]0;\s%pre%7$PS1" ;; *) ;; esac

Pessoalmente, eu não acho que eu iria adicioná-lo ao meu bashrc, porque o DEBUG combinado com o trace lança um monte de lixo quando todo o seu shell é iniciado. Se você pode viver com isso, realmente funciona. Ele exibe todo o comando, no entanto, não apenas a primeira palavra.

    
por 19.09.2009 / 07:02
3

Bem, já que todo mundo já parece conhecer a solução de David Pashley, fiquei surpreso por ter demorado tanto para encontrar esse, porque é quase tão antigo.

Esta solução, na verdade, cuida do lixo de spam da conclusão do bash.

Para ser claro: eu não fiz nada sozinho aqui, mas pesquisa. Todo o crédito vai para Marius Gedminas .

Isso funciona perfeitamente para mim com o Gnome-Terminal / Terminator

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "3]0;${USER}@${HOSTNAME}: ${PWD}
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "3]0;${USER}@${HOSTNAME}: ${PWD}%pre%7"'

    # Show the currently running command in the terminal title:
    # http://www.davidpashley.com/articles/xterm-titles-with-bash.html
    show_command_in_title_bar()
    {
        case "$BASH_COMMAND" in
            *3]0*)
                # 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 "3]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}%pre%7"
                ;;
        esac
    }
    trap show_command_in_title_bar DEBUG
    ;;
*)
    ;;
esac
7"' # Show the currently running command in the terminal title: # http://www.davidpashley.com/articles/xterm-titles-with-bash.html show_command_in_title_bar() { case "$BASH_COMMAND" in *3]0*) # 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 "3]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}%pre%7" ;; esac } trap show_command_in_title_bar DEBUG ;; *) ;; esac

Além disso, este é um cross -post porque eu acabei de descobrir sobre isso e queria compartilhar e acho que é útil aqui também.

    
por 19.11.2012 / 14:27
2

O abaixo deve funcionar. Eu tenho a função em um arquivo .bash_functions e a coloco no arquivo .bashrc antes de definir $PROMPT_COMMAND .

function term_title
{
        history 1 | awk '{print $2}';
}

PROMPT_COMMAND='echo -ne "3]0;"$(term_title)"
function term_title
{
        history 1 | awk '{print $2}';
}

PROMPT_COMMAND='echo -ne "3]0;"$(term_title)"%pre%7"'
7"'
    
por 17.09.2009 / 02:22
2

no zsh você acabou de definir sua função 'precmd'. veja aqui .

    
por 19.09.2009 / 10:16