Depende de como as coisas são configuradas, mas, por padrão, algo assim deve funcionar.
settitle() {
printf "\033k$1\033\\"
}
Então corra:
settitle NEWTITLE
.
Consulte a documentação do título da tela e o FAQ da tela do GNU para obter mais detalhes.
Dado que o Ctrl+ A Aestá apenas alterando-o até o próximo comando, provavelmente está sendo definido por $PS1
(todos os shells), ou $PROMPT_COMMAND
/ DEBUG trap
(somente bash) ou precmd
/ / preexec
(apenas zsh).
Você deve olhar para qualquer lugar que \e
ou \033
aparece com k
ou \\
depois dela, basicamente, como o meu settitle
exemplo acima.
ATUALIZAR
Você disse que tinha um costume preexec
.
Por que não mudar para isso:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
Em seguida, você pode definir um título personalizado executando:
TITLE="my title"
e desmarque o título executando
TITLE=
Não se esqueça de mudar precmd
e $PS1
também se necessário.
A PARTE, DE LADO
Você pode até mesmo estender isso para todos os terminais (por exemplo xterm
, gnome-terminal
, etc.) por não codificação duro a \ek
e \e\\
.
É assim que eu faço:
terminit()
{
# determine the window title escape sequences
case "$TERM" in
aixterm|dtterm|putty|rxvt|xterm*)
titlestart='\033]0;'
titlefinish='\007'
;;
cygwin)
titlestart='\033];'
titlefinish='\007'
;;
konsole)
titlestart='\033]30;'
titlefinish='\007'
;;
screen*)
# status line
#titlestart='\033_'
#titlefinish='\033\'
# window title
titlestart='\033k'
titlefinish='\033\'
;;
*)
if type tput >/dev/null 2>&1
then
if tput longname >/dev/null 2>&1
then
titlestart="$(tput tsl)"
titlefinish="$(tput fsl)"
fi
else
titlestart=''
titlefinish=''
fi
;;
esac
}
# or put it inside a case $- in *i* guard
if test -t 0; then
terminit
fi
# set the xterm/screen/etc. title
settitle()
{
test -z "${titlestart}" && return 0
printf "${titlestart}$*${titlefinish}"
}
Então você pode mudar preexec
para:
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
Ctrl-A A
. E sobre o prompt, você quer dizer que eu tenho que modificar$PS1
sempre que quiser que o título não mude?