Simulando o shelltitle do GNU Screen no tmux

3

Estou tentando simular o recurso shelltitle do GNU Screen no tmux. Eu tenho o seguindo no meu ~/.bashrc :

if [[ "$TERM" == screen* ]]; then
    SCREEN_ESC='\[\ek\e\\]'
else
    SCREEN_ESC=''
fi

PS1="\n\w ${SCREEN_ESC}$ "

e o seguinte no meu ~/.screenrc :

shelltitle        "$ |bash"

A configuração de shelltitle faz com que o GNU Screen procure por uma nova linha no shell e elimine todos os caracteres de $PS1 até o caractere de escape e substitua com a primeira palavra encontrada depois disso. Isto é mais claramente explicado no página do manual :

Here's how it works: you must modify your shell prompt to output a null title-escape-sequence (<esc>k<esc>) as a part of your prompt. The last part of your prompt must be the same as the string you specified for the search portion of the title. Once this is set up, screen will use the title-escape-sequence to clear the previous command name and get ready for the next command. Then, when a newline is received from the shell, a search is made for the end of the prompt. If found, it will grab the first word after the matched string and use it as the command name. If the command name begins with either '!', '%', or '^' screen will use the first word on the following line (if found) in preference to the just- found name.

Isso é diferente do set-option -g set-titles on do tmux, que captura apenas o nome do processo. Então, um script Python script.py seria intitulado como script.py na tela (que é o jeito que eu quero), enquanto que seria intitulado como python no tmux (que eu não quero).

Eu sei que se pode renomear o windows tmux por:

printf '3kWINDOW_NAME3\'

Então eu queria saber se há alguma maneira que eu possa alternativamente deixar o tmux saber que Eu digitei um novo comando. Se houver alguma maneira eu posso pegar o último comando inserido, eu poderia usar o PROMPT_COMMAND do Bash para fazer isso. Alguma idéia?

    
por baiitsu 30.06.2013 / 16:35

0 respostas