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?
Tags gnu-screen tmux