web-dev-qa-db-fra.com

la fonction set-title dans bash ne fonctionne pas après l'application de Powerline

set-title ??

Je viens de découvrir une astuce que j'utilise pour changer un titre bash-terminal sur le terminal. Voici comment cela fonctionne:

#function set-title() on terminal

function set-title() {
  if [[ -z "$ORIG" ]]; then
  ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
PS1=${ORIG}${TITLE}
}

J'écris ce code dans ~/.bashrc. Je peux donc changer le titre, et je n'ai pas confondu pour quel terminal j'utilise.

PRE PROBLÈME

Je veux personnaliser bashvim et leur ami avec le nouveau look alors j'utilise ce type guide pour installer Powerline et cela fonctionne parfaitement.

Problème [~ # ~] [~ # ~]

Ma set title la fonction ne fonctionne pas maintenant.

CE QUE J'ESSAYE

Placez le code du titre en haut de .bashrc ne fonctionne pas. (Je sais que cette façon est stupide)

Écrivez ça set-title sur usr/share/powerline/bindings/bash/powerline.sh ne fonctionne pas, je pense que le code est différent de .bashrc

Alors, comment obtenir mon set-title fonction de retour?

1
mandaputtra

Votre méthode ("\[\e]2;$*\a\]") (les sorties Esc];Your title^G(Bel)). Il s'agit d'une "séquence ESCape VT100" qui n'est pas correctement gérée par TOUS les émulateurs de terminal. Comparer echo $TERM dans les deux environnements.

Pour une approche plus portable, installez et utilisez xttitle - Changes X terminal emulator window titles. Je l'ai intégré à mon ~/.bashrc (la commande cd ajuste le titre):

# from the "xttitle(1)" man page - put info in window title
update_title()
{
    [[ $TERM = xterm ]] || [[ $TERM = xterm-color ]]  && xttitle "[$$] ${USER}@${HOSTNAME}:$PWD"
}

cd()
{
    [[ -z "$*" ]] && builtin cd $HOME
    [[ -n "$*" ]] && builtin cd "$*"
    update_title
}
1
waltinator