Terminal: Possibilité de renommer le titre de l'onglet au moment de l'exécution

Créé le 31 mai 2019  ·  56Commentaires  ·  Source: microsoft/terminal

Les onglets sont une fonctionnalité très utile, mais à mesure que vous ouvrez de plus en plus d'onglets, il devient difficile et déroutant de savoir quel onglet est destiné à quel usage, à moins que vous ne l'utilisiez. Ce sera mieux si nous pouvons renommer l'onglet et lui donner un nom convivial.

La façon dont nous pouvons implémenter le renommage des onglets du point de vue fonctionnel est :

1 - Clic droit -> Renommer

Faites un clic droit sur un onglet que l'utilisateur souhaite renommer, cela ouvrira le menu contextuel et à partir du menu contextuel, l'utilisateur sélectionnera Renommer.

Le titre de l'onglet se transformera en une zone de texte, et l'utilisateur pourra écrire le nom de l'onglet, et en appuyant sur la touche Entrée du clavier ou en cliquant n'importe où en dehors de la zone de texte, le titre de l'onglet sera appliqué. Si l'utilisateur appuie sur la touche ESC, nous rejetterons les modifications.

image

2 - Double clic - titre de l'onglet

Le titre de l'onglet se transformera en une zone de texte, et l'utilisateur pourra écrire le nom de l'onglet, et en appuyant sur la touche Entrée du clavier ou en cliquant n'importe où en dehors de la zone de texte, le titre de l'onglet sera appliqué. Si l'utilisateur appuie sur la touche ESC, nous rejetterons les modifications.

Le résultat final ressemblera à :

image

Area-User Interface Issue-Feature Product-Terminal Resolution-Fix-Committed

Commentaire le plus utile

Notez que vous pouvez également définir le titre à partir de la ligne de commande avec title "new title" dans cmd et $Host.UI.RawUI.WindowTitle = "new title" dans powershell

Tous les 56 commentaires

Le nom du profil ne pourrait-il pas être utilisé par défaut pour le titre de l'onglet, mais peut-être une option pour afficher un chemin à la place ?

Le chemin est généralement là dans la pompe, donc pas sûr qu'il soit nécessaire dans les deux.

Le chemin est là car c'est ce que le shell a _put_ là. Pour des discussions à ce sujet et sur les mérites des titres, #608. C'est une demande légèrement différente.

Le nom du profil ne pourrait-il pas être utilisé par défaut pour le titre de l'onglet, mais peut-être une option pour afficher un chemin à la place ?

Le chemin est généralement là dans la pompe, donc pas sûr qu'il soit nécessaire dans les deux.

Le profil ne montre que le CMD ou PowerShell.. mais ce que je propose, c'est de pouvoir renommer Tab avec un nom convivial.

Je suis presque sûr qu'il s'agit d'un sous-ensemble de l'une des solutions que j'ai proposées dans ce fil :

Si nous n'avions que 2 modes, nous pourrions le faire de deux manières possibles :

  1. Ajoutez une chaîne optionnelle titleText:string au profil. Si cela est défini, nous afficherons cette chaîne à la place du titre du terminal.

    • cela a l'inconvénient de ne pas utiliser par défaut le nom du profil. L'utilisateur devra définir manuellement cette chaîne.

    • si le nom du profil change, l'utilisateur devra également le modifier manuellement.

    • il n'est peut-être pas tout à fait clair que titleText signifie que nous l'utiliserons à la place du titre du terminal, mais idéalement, l'interface utilisateur des paramètres expliquera cela mieux, et la clé réelle n'a pas tellement d'importance.

Le nom du profil ne pourrait-il pas être utilisé par défaut pour le titre de l'onglet, mais peut-être une option pour afficher un chemin à la place ?
Le chemin est généralement là dans la pompe, donc pas sûr qu'il soit nécessaire dans les deux.

Le profil ne montre que le CMD ou PowerShell.. mais ce que je propose, c'est de pouvoir renommer Tab avec un nom convivial.

Renommer l'onglet impliquerait que le nom est là jusqu'à ce que cet onglet soit fermé. Ma suggestion serait de permettre à un profil d'avoir un nom choisi par l'utilisateur

Cependant, je suppose que je laisse cela ouvert pour suivre spécifiquement l'ajout d'un bouton au menu contextuel de l'onglet pour définir le TitleText du profil.



euh, maintenant que j'ai tapé ceci, nous devrions peut-être avoir un texte d'exécution que nous modifions. Je pense au cas où un utilisateur a plusieurs onglets ouverts avec le même profil. Si l'utilisateur souhaite renommer l'un des onglets, il ne souhaite probablement pas que ce nom soit appliqué globalement à chacun des onglets avec ce profil. Ils veulent probablement juste renommer cet _one_ onglet.

Cela devrait donc impliquer de définir un indicateur sur l'onglet indiquant qu'il utilise un titre d'exécution par opposition au titre du contrôle, et nous devons simplement ignorer tous les changements de titre à partir du contrôle. Si le paramètre de titre du profil est modifié, nous l'ignorerons également.

Bien qu'une question ici soit de savoir si cette chaîne personnalisée s'applique à l'onglet ou au volet ciblé ? Je supposerais probablement que cela s'appliquerait à l'onglet, pas au volet.

@zadjii-msft, cela devrait s'appliquer à l'onglet. De plus, s'il efface le texte, il doit définir l'indicateur d'exécution sur false. Cela permettra également à l'onglet de commencer à utiliser le nom du profil.

@carlos-zamora voulait travailler sur les actions des onglets, et je pense que c'est un assez bon ajustement. Il l'a même suggéré ! Voici donc l'affaire : il y a clairement trois écoles de pensée différentes ici concernant le titre, c'est donc maintenant Spec Needed . :le sourire:

@carlos-zamora voulait travailler sur les actions des onglets, et je pense que c'est un assez bon ajustement. Il l'a même suggéré ! Voici donc l'affaire : il y a clairement trois écoles de pensée différentes ici concernant le titre, c'est donc maintenant Spec Needed . ??

OUI! Je veux vraiment cette fonctionnalité. Certainement une question de savoir comment cela interagit avec le shell/distro envoyant un titre jusqu'à l'onglet (#608). J'ai également remarqué que l'action de survol devrait être incluse dans cela (c'est-à-dire: le survol de l'onglet affiche le chemin complet sous la souris [essayez sur Edge]). @cinnamon-msft et moi allons bientôt rédiger une spécification. Nous sommes super excités !

Supr. Faites-moi savoir comment je peux contribuer en tant que développeur.

Notez que vous pouvez également définir le titre à partir de la ligne de commande avec title "new title" dans cmd et $Host.UI.RawUI.WindowTitle = "new title" dans powershell

Nous devrions utiliser #608 pour suivre les problèmes de titrage des onglets. Merci!

Notez que vous pouvez également définir le titre à partir de la ligne de commande avec title "new title" dans cmd et $Host.UI.RawUI.WindowTitle = "new title" dans powershell

Très utile! J'ai ajouté une fonction à mon profil Powershell pour me permettre de le définir plus facilement :

function Set-Title {
    param(
        [string]
        $title
    )
    $Host.UI.RawUI.WindowTitle = $title   
}

Notez que vous pouvez également définir le titre à partir de la ligne de commande avec title "new title" dans cmd et $Host.UI.RawUI.WindowTitle = "new title" dans powershell

Lors de l'exécution de tâches npm, telles que npm run serve , le titre deviendra npm .

Un moyen simple de définir un nom pour les onglets ouverts contribuerait grandement à le rendre encore plus utile. Avec plusieurs onglets PowerShell ouverts, j'ai du mal à savoir dans lequel j'essaie de travailler.

@greggbjensen utilise simplement une fonction ou un alias comme le commentaire de tvsbrent ci-dessus

@ phuclv90 un clic droit pour définir rapidement le nom serait encore beaucoup plus rapide et plus simple. Cela semble nécessaire si vous prévoyez d'avoir beaucoup d'onglets. La possibilité de définir les couleurs des onglets serait également un bon ajout.

Ce serait vraiment bien de pouvoir renommer les onglets en double-cliquant simplement dessus et en définissant un nouveau titre dans une sorte de zone de texte. Ce nom remplace le titre original et reste jusqu'à ce que l'onglet soit fermé ou renommé à nouveau.

Publié à l'origine par @Vasiliy-Bondarenko dans #3387

Veuillez permettre de renommer facilement l'onglet avec un nom convivial à partir de l'interface utilisateur, c'est une fonctionnalité que j'utilise constamment avec ConEmu et l'une des raisons pour lesquelles je ne passe pas encore au terminal Windows, car ce n'est pas assez pratique lorsque vous avez de nombreux " "connus" onglets ouverts mais je ne peux pas le comprendre facilement dans le terminal Windows

Je viens de découvrir que je peux au moins contourner le titre dans WSL avec une fonction ajoutée à .bashrc qui peut être appelée à partir de l'invite, par exemple title "my title" :

title() {
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}$1\a\]\[\033[01;34m\]\w\[\033[00m\]> "
}

Ce n'est pas vraiment une _solution de contournement_, c'est le moyen le meilleur, le plus flexible et le plus robuste pour définir le titre de presque n'importe quelle fenêtre de terminal. Il peut être dynamique, il fonctionne via SSH et peut incorporer des éléments disponibles uniquement sur l'hôte distant.

J'ai modifié la solution publiée par @xoofx pour ne pas modifier l'invite dans le terminal lui-même :

title() {
    PS1="\[\e]0;$* \a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
}

Cela a l'air un peu moche, mais si vous mettez cela dans votre ~/.bashrc , vous pourrez appeler title <title_text> et cela définira le titre de l'onglet/de la fenêtre, mais cela ne dérangera pas l'invite par défaut.

Dans iTerm sur Mac, je peux le faire et c'est vraiment utile. Je peux également définir la couleur de l'onglet, ce qui est plutôt sympa.

J'utilise presque exclusivement Ubuntu WSL dans Windows Terminal, et tous mes onglets affichent " myname@mycomputer/c/g " où " g " est la première lettre du répertoire racine où se trouvent tous mes projets. C'est complètement inutile pour moi. Il existe sans aucun doute un moyen de le changer, mais un moyen convivial serait bien.

:))) J'utilise WSL. Je veux renommer l'onglet "mon moniteur", j'ai utilisé : "mon moniteur ; source run.sh"

La stratégie de @quanticle ci-dessus est idéale pour les terminaux locaux, mais dès que vous vous connectez à un serveur différent, la PS1 est réinitialisée et vous perdez votre titre. Ce serait donc vraiment bien de pouvoir définir une étiquette persistante.

La stratégie de @quanticle ci-dessus est idéale pour les terminaux locaux, mais dès que vous vous connectez à un serveur différent, la PS1 est réinitialisée et vous perdez votre titre. Ce serait donc vraiment bien de pouvoir définir une étiquette persistante.

Pour être juste, la solution de » @quanticle est _even mieux (!) _ Si vous le configurez ainsi sur le serveur distant! De cette façon, le titre de la fenêtre peut refléter _le serveur auquel vous accédez actuellement_, et le shell peut mettre toute information dynamique qui serait pertinente pour une session à distance. C'est quelque chose qu'un remplacement de titre d'onglet local ne pourra _jamais_ accomplir, même s'il a été parfaitement implémenté.

@DHowett-MSFT Ce serait vrai si vous vouliez que le titre reflète "sur quel serveur vous êtes", mais pas nécessairement si vous vouliez que le titre reflète quelque chose comme une "tâche". J'utilise donc peut-être les mêmes serveurs, mais pour des tâches distinctes, et je souhaite conserver ces tâches dans différents onglets de terminal... et je souhaite que le nom persiste lorsque je bascule entre les serveurs de ces onglets...

Maintenant, c'est la dernière et unique raison pour laquelle je ne peux pas choisir wt comme outil de terminal principal sur Windows.
:(

C'est pourquoi Windows Terminal ne m'est pas utile non plus, je me retrouve avec beaucoup d'onglets nommés node, et je ne peux pas les modifier (même après avoir essayé de changer via le json, et en utilisant title et d'autres solutions).

Je me retrouve avec plein d'onglets nommés node,

Bon, maintenant c'est un assez bon exemple d'un scénario qui _nécessite_ cela, et le simple fait de définir le titre à partir du shell ne résoudra pas. Merci pour les commentaires!

Cela pourrait aider :

set PROMPT=$e]0;$p$e$p$g

https://github.com/microsoft/terminal/issues/2304#issuecomment -528319270

Pour moi, cette tâche est la parité avec cmder/etc. J'ai souvent plusieurs projets ouverts dans un dossier bin ou quelque chose de similaire, donc pouvoir appliquer des étiquettes personnalisées serait utile.

Un autre cas d'utilisation serait d'interagir via SSH pour obtenir des noms à partir de variables d'environnement Linux et de les combiner avec la dernière partie du chemin du répertoire, exemple de nom d'onglet :
$PROJECTROOT $CONFIG src/path/to/dir
(puis coupez le début du chemin, sachant que mon répertoire se trouve quelque part sous /user/username est moins utile que de connaître la fin du chemin)

Cela devrait également être configurable à partir de la ligne de commande.

Alors quand on fait quelque chose comme :

wt.exe -p "profil1"

Nous devrions pouvoir ajouter un argument spécifiant le nom de l'onglet, comme :

wt.exe - "profile1" -name "nom pour l'onglet 1"

Bien sûr, cela fonctionnerait également avec chaque "nouvel onglet" sur la ligne de commande.

Merci.

@mfeemster merci pour la suggestion ! J'ai ajouté cela à la méga liste de travail que nous traçons pour les arguments de ligne de commande dans # 4632 :

  • [ ] Ajout de la prise en charge de -t,--title title pour définir le titre de démarrage d'une nouvelle session de terminal (ajout à terminal_parameters )

en passant, si vous ajoutez cette fonctionnalité, la largeur de l'onglet de la fenêtre doit également être prise en compte.
largeur fixe car 16 caractères gaspille trop d'espace pour le nom court, cache également des informations importantes pour le nom long.

Je suggère :

  • la largeur de l'onglet doit être de 4 à 24 caractères, ajustement automatique par nom d'onglet.
  • et supprimez les espaces vides tête/queue.
  • si aucune icône n'est définie, supprimez également l'espace.
  • ajoutez une option de configuration pour désactiver le bouton de fermeture "X". ne prend en charge que la fermeture du menu par clic droit.

putty-tab
économisez plus de place pour de vraies informations. ??

@fanlix, vous serez heureux de savoir que vos demandes sont déjà en grande partie suivies par

  • #597 - Plus d'options de dimensionnement des onglets au-delà de equal et sizeToContent
  • #3327 - Options de thème, y compris la suppression du « X »

Notez que vous pouvez également définir le titre à partir de la ligne de commande avec title "new title" dans cmd et $Host.UI.RawUI.WindowTitle = "new title" dans powershell

C'est seulement pour renommer la console.
Mais le but de cette requête originale est de renommer les onglets à l'intérieur de la console.
S'il vous plaît gardez cela à l'esprit :)

C'est seulement pour renommer la console.
Mais le but de cette requête originale est de renommer les onglets à l'intérieur de la console.
S'il vous plaît gardez cela à l'esprit :)

Il faut savoir que changer le titre de "la console", lorsque la console est hébergée dans un onglet, _change le titre de l'onglet_. :le sourire:

Il faut savoir que changer le titre de "la console", lorsque la console est hébergée dans un onglet, _change le titre de l'onglet_. ??

Oui, tu as raison. :-)
Je n'ai pas remarqué la façon dont cela a été implémenté car cela renomme également le nom de la console...

En fait, le nom de l'onglet sur lequel vous vous concentrez actuellement devient le titre de la console dans la barre des tâches.
Et par conséquent, si vous travaillez avec plusieurs consoles en parallèle (dédiées à plusieurs tâches avec différentes listes d'onglets distants), les noms des consoles ne sont pas stables et vous devez à nouveau rechercher : "Dans quelle console est mon onglet ?"

Dans ISE, cela est séparé.
Vous avez pour le nom de la console dans la barre des tâches :

$Host.UI.RawUI.WindowTitle = "new title"

et pour les noms d'onglet à l'intérieur de la console, vous avez :

$psISE.CurrentPowerShellTab.DisplayName = "tab title"

Un problème avec $Host.UI.RawUI.WindowTitle = "new title" est que si j'exécute npm run dev , le titre de l'onglet devient npm

Cmder le fait bien.

C'est une idée parfaite pour mon tracker de productivité qui utilise des noms d'onglets. Ce serait génial de l'automatiser dans le runtime. Mon travail autour de :
(Je reçois une mise à jour à chaque fois que j'efface la console, ce qui est beaucoup 😝

## UI
    $pIcon = "💥"
    $tIcon = "😍"
      function trloc ($pth){
        $pwd -replace [regex]::Escape($HomeDir), $pth
      }

  # Comand line
    function prompt {
      (trloc($pIcon)) + "💁‍"
    }

  # Tab - Window - Title - Name as actual path (Shorted because I'am using ManicTime to track my productivity)
    function tabName { $Host.UI.RawUI.WindowTitle = trloc($tIcon) }
    function c { tabName; Clear-Host }

C'est une idée parfaite pour mon tracker de productivité qui utilise des noms d'onglets. Ce serait génial de l'automatiser dans le runtime. Mon travail autour de :
(Je reçois une mise à jour à chaque fois que j'efface la console, ce qui est beaucoup 😝

## UI
    $pIcon = "💥"
    $tIcon = "😍"
      function trloc ($pth){
        $pwd -replace [regex]::Escape($HomeDir), $pth
      }

  # Comand line
    function prompt {
      (trloc($pIcon)) + "💁‍"
    }

  # Tab - Window - Title - Name as actual path (Shorted because I'am using ManicTime to track my productivity)
    function tabName { $Host.UI.RawUI.WindowTitle = trloc($tIcon) }
    function c { tabName; Clear-Host }

Salut. S'il vous plaît, quel tracker utilisez-vous?

Salut. S'il vous plaît, quel tracker utilisez-vous?

ManicTime
Maintenant sur Linux est ActivityWatcher c'est bien aussi, j'espère qu'il grandira plus vite :)

Le powershell n'aide que si c'est ce que vous courez. Lors de l'exécution de terminaux ssh avec openssh, ce serait bien de renommer les onglets pour savoir sur quel hôte je suis. Il récupère le premier hôte auquel vous accédez, puis c'est ce qu'il affiche, mais si vous changez de serveur, il ne se met pas à jour. J'aimerais une option r-click pour renommer, ou même une variable d'environnement que je pourrais définir, elle reprendrait.

Je veux dire, c'est juste quelque chose que vous pouvez configurer sur ces serveurs. :)

Vous dites cela quand nous parlons de plus de 1000 serveurs. J'essaie cela sur xshell, et j'ai un hôte bastion à partir duquel je saute et je cherche un moyen simple de garder une trace du nom du serveur. Avec xshell, cela est fait avec les scripts que j'utilise pour le définir en interne.

Bien que je joue avec printf \033]0; et semble faire ce dont j'ai besoin.

: tada:Ce problème a été résolu dans #5775, qui a maintenant été publié avec succès sous le nom Windows Terminal Preview v1.1.1671.0 .:tada:

Liens utiles :

Wow.. Félicitations à l'équipe :D Désolé, je n'ai pas beaucoup participé au fil de discussion.. mais je le suivais de près. Cela m'a donné un excellent aperçu de la façon dont Microsoft planifie les fonctionnalités.. J'ai toujours fait confiance à Microsoft.. mais ce processus m'a donné l'assurance que les fonctionnalités sont pensées en détail.. et avec une qualité à l'esprit.. fonctionnalité aussi petite que celle-ci comment cela peut être transformé en une fonctionnalité intéressante, c'est ce que ce fil enseigne vraiment.

Oui, félicitations à l'équipe.

Il me manque encore une chose, pouvoir double-cliquer dans l'onglet pour le renommer, cette fonctionnalité est-elle prévue ?

Besoin de pouvoir définir une liaison de touche pour le renommage des onglets (F2 par défaut aurait du sens ?)

@Inrego Vous pouvez simplement cliquer avec le bouton droit sur l'onglet pour le renommer. Les raccourcis KB me semblent nécessaires pour les actions que vous effectuez souvent, vous ne voulez donc pas utiliser la souris. Mais à quelle fréquence renommez-vous vraiment un onglet pendant que vous travaillez ? Je pense que le menu contextuel est suffisant. Juste mes 2 cents.

@mfeemster, une application console me semble quelque chose qui ne devrait pas nécessiter de souris pour fonctionner.

En plus de cela, j'aimerais automatiser les onglets de nommage dans mon gestionnaire de mots de passe lors de la connexion à un serveur.
Pour l'instant, j'ai contourné le problème en utilisant la palette de commandes pour ouvrir un nouvel onglet avec le nom souhaité. mais ce n'est pas l'idéal.

Il y a un raccourci KB pour ouvrir un nouvel onglet. Je dirais que renommer un onglet pourrait être une action qui est effectuée plus souvent que d'ouvrir un onglet. Ou il existe également un raccourci KB pour fermer tous les onglets. Aussi une action qui est plus rarement réalisée. Ce n'est pas parce que vous renommez rarement un onglet que vous pouvez supposer que c'est une action rare pour tout le monde. Ce que j'essaie de dire, cela ne devrait pas vraiment être la raison de le mettre en œuvre ou non, car c'est très subjectif et varie d'une personne à l'autre.

Besoin de pouvoir définir une liaison de touche pour le renommage des onglets (F2 par défaut aurait du sens ?)

Vous pouvez le faire avec une liaison de touche pour renameTab , mais pour le moment, vous ne pouvez coder en dur qu'un titre. Il y a un PR ouvert (#7462) qui ajoute openTabRenamer . Nous devons revenir à ce PR ouvert.

C'est exactement ce dont j'ai besoin, merci. Je vais suivre ce PR

Cette page vous a été utile?
0 / 5 - 0 notes