Nouvelle installation Ubuntu 15.04: impossible de renommer les onglets gnome-terminal


38

Dans Ubuntu 14.10, si plusieurs onglets de terminal étaient ouverts, je pourrais cliquer avec le bouton droit de la souris sur un onglet de terminal et le renommer. Dans Ubuntu 15.04, je ne trouve pas cette fonctionnalité.

Y a-t-il un moyen facile de le récupérer?

Ceci est la version actuelle:

$ gnome-terminal --version
GNOME Terminal 3.14.2

Réponses:


21

Répondu ici

Je cite:

Le user titlecode a été retiré 1 de gnome-terminal 3.14. Il n'y a qu'une seule façon de définir le titre, en utilisant une séquence d'échappement - par exemple avec bash:

PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'

1: voir le bogue gnome 724110 et le bogue gnome 740188 .


10
Merci d'avoir répondu. C'est dommage que ce soit parti, j'espère qu'ils l'ajouteront dans la prochaine version, dans l'intervalle, j'utiliserai la séquence d'échappement au lieu de la méthode du clic droit.
Tom

2
@Tom Ecrire un rapport de bug =)
AB

13
ce n'est pas juste une honte: c'est un non-sens. J'ai eu la mauvaise idée de «passer» de Debian Wheezy à Jessie, juste pour avoir tout ce que j'avais auparavant (mais je ne le sais pas encore), mais en pire; Mauvaises décisions et défauts ridicules (par exemple, dans gdm3, la liste des wm / sessions possibles que j'ai installées ne correspond ni au défilement, elle est donc simple à couper et par conséquent, je ne peux pas choisir tous les wm que j'ai). Pour moi, GNOME est condamné depuis gnome-shell. Il a également disparu du menu pour ouvrir un nouveau terminal dans une nouvelle fenêtre ou un nouvel onglet (mais vous pouvez toujours le faire via le raccourci. Pourquoi?! Tout remplacer par un gros bouton intelligent: un clic et ça fait n'importe quoi!)
ShinTakezou

2
Généralement, les nouvelles versions ajoutent et ne suppriment pas les fonctionnalités
angelcervera

2
J'ai créé une commande (un script shell) appelée tabulation qui contient simplement echo -ne "\ 033] 0; $ 1 \ 007". Désormais, dans n'importe quel onglet, je peux simplement exécuter l'onglet TABNAME pour définir le titre de l'onglet. Pas aussi pratique que de cliquer avec le bouton droit sur l'onglet pour le renommer, mais cela se fera pour le moment. Merci AB!
Brian Pipa

31

La .bashrcsolution proposée par Kirby a fonctionné pour moi:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;$@\a"
  PS1=${ORIG}${TITLE}
}

puis de mon invite: $ set-title test-title


2
Cela fonctionne bien pour moi le 15.10, la seule réserve étant que chaque fois que vous l’exécutez, vous ajoutez à PS1, ne le faites pas à partir d’un script. Après l'avoir appelé quelques fois avec set-title "longer and ":echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
ahcox le

1
fonctionne pour moi sur Ubuntu 16.04!
Programster

1
fonctionne comme un charme !!
sharadendu sinha

Comment modifier le titre pendant l'exécution d'un processus de premier plan que je ne souhaite pas abandonner?
Jānis Elmeris

1
Je pense que vous pouvez le faire en mettant en pause le processus en utilisant Control + Z, puis set-title X, fgpour le reprendre.
ronan_mac

18

Je ne peux pas croire qu'ils ont supprimé une fonctionnalité aussi conviviale que celle-ci.

Je passe à ROXTerm ( http://roxterm.sourceforge.net ), qui fait très bien l'affaire. C'est emballé dans Ubuntu:

sudo apt-get install roxterm

Ensuite, laissez le dinosaure continuer sa propre voie ;-)


1
Comment puis-je changer le titre de l'onglet dans roxterm? Je n'ai pas pu le trouver.
Halil

travaillera aussi pour 16.04
prusswan

Wow, je ne peux pas mettre un terminal en arrière-plan avec gnome-terminal et je n'ai jamais compris pourquoi ... c'est un problème avec le terminal lui-même. L’arrière-plan du terminal devilspie fonctionne bien avec roxterm.
m3nda

1
RoxTerm est génial et fonctionne encore mais ne continuera malheureusement pas beaucoup plus longtemps: sadface:: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975
Williams

Je suis passé à Terminator depuis et je n'ai plus eu à utiliser RoxTerm ....
Michael Opdenacker

14

J'ai essayé RoxTerm comme suggéré ci-dessus, avec de bons résultats. Mais je me suis installé sur MATE Terminal, qui fait partie du projet MATE, une continuation de Gnome 2, le 15 avril:

sudo apt-get install mate-terminal

Ce terminal est basé sur le code du terminal Gnome.


Commentaire: Il est difficile de comprendre l’état d’esprit des développeurs de Gnome Terminal. Il y a beaucoup de discussions là-bas sur "comment" nommer les onglets de terminaux et sur la difficulté d'obtenir des résultats corrects. Si tel est le cas, pourquoi empêcher l’utilisateur de le nommer plus difficilement? Pas très intelligent du tout.


6

Maintenant, j'ai étudié cela pendant la plus grande partie de la journée et j'ai finalement trouvé un moyen de définir ce titre. Cela se fait via des séquences d'échappement commençant par \ e] 0; et se terminer par un caractère BEL (= \ 007 = \ a). Contrairement à ce que j'ai indiqué ci-dessus, les communications depuis le shell vers l'application de terminal sont possibles, très limitées, via de telles séquences d'échappement (il en existe quelques-unes de plus).

À propos de cela d'en haut:

PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

Cela peut marcher, mais ça ne fonctionne pas toujours. PROMPT_COMMANDest une variable dont le contenu est exécuté à chaque fois que vous envoyez une commande. Il envoie donc également cette séquence d'échappement. Toutefois, cela peut être annulé par une séquence d'échappement dans la variable PS1, qui définit l'invite de ligne de commande. C'est pourquoi ce qui précède n'a eu aucun effet ici.

A partir d'une ancienne installation Ubuntu, j'ai saisi ceci, qui définit l'invite de commande (partie droite, après le ]) et envoie également la séquence d'échappement requise (partie gauche, y compris le ]):

PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "

Cela fonctionne probablement mieux, car il n'est pas nécessaire d'interpréter à $PROMPT_COMMANDchaque fois. Il a également beaucoup plus d'options, car Bash a plus de séquences d'échappement ici, par exemple \upour le nom d'utilisateur actuel, \Wpour le nom du répertoire actuel ou \wpour le chemin d'accès complet du répertoire de travail actuel, éventuellement ajusté aux dernières par le nombre indiqué $PROMPT_DIRTRIM. Voir le chapitre PROMPTINGdans la page de manuel Bash. Notez également que la séquence d'échappement doit également être entourée par \[et \]ici.

Pour définir un titre fixe, cela fonctionne:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "

Prendre plaisir!


Au cours de mon enquête, j’ai également essayé de comprendre le code source de gnome-terminal, ce qui conduit au code source de vte. La prise en charge de la définition du titre et de la lecture des séquences d’échappement est considérée comme un risque pour la sécurité: voir ici (cas 20, cas 21) et ici. ("Rapport de titre de fenêtre").


Ceci définit le titre mais supprime également toute définition précédente PS1pour d'autres utilisations, telles que la définition d'une invite de commande personnalisée. Je viens d'essayer d'ajouter votre séquence d'échappement au PS1contenu existant et cela semble fonctionner. Comme ça: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
ahcox

5

Définir $ PROMPT_COMMAND comme indiqué ci-dessus n'a aucun effet ici. Pas de surprise, car Bash s'exécute dans le terminal et les processus parents (ici: gnome-terminal) ne peuvent pas lire l'environnement d'un enfant sur un système d'exploitation de type Unix. En utilisant quelque chose de plus simple, comme

PROMPT_COMMAND='echo bla'

Exécute echo bla , rien d'autre ne se passe.

Edit: il faut envelopper cela dans des séquences d'échappement, voir mon autre réponse. Bien que la lecture de l'environnement enfant ne soit pas possible, certaines communications avec le parent le sont via ces séquences.

Dans le bogue 740188 de Gnome, ils parlent de la définition d'une fonction title () dans .bashrc. Un différent pour chaque onglet ouvert? Le piratage laide grave à venir, si possible du tout!

Même d’autres explications sur Stackexchange parlent de la définition de $ PS1 (et d’être voté). Désolé, non, ce n'est pas le titre, c'est l'invite de commande.

En bref: ils ont tout gâché pour économiser un petit espace dans la boîte de dialogue des préférences. OMG

Désormais, la seule chance d'obtenir une décision de développeur annulée est de déclencher une tempête de merde grave, sinon ils ferment simplement votre rapport de bogue en quelques secondes (essayé plusieurs fois). Comment pourrions-nous créer cette merde?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.