Terminal: Capacidade de renomear o título da guia em tempo de execução

Criado em 31 mai. 2019  ·  56Comentários  ·  Fonte: microsoft/terminal

As guias são um recurso muito útil, mas à medida que você abre mais e mais guias, fica difícil e confuso controlar qual guia é para qual propósito, a menos que você use a guia. Será melhor se pudermos renomear a guia e dar a ela um nome amigável.

A maneira como podemos implementar a renomeação da guia do ponto de vista funcional é:

1 - Clique com o botão direito -> Renomear

Clique com o botão direito em uma guia que o usuário deseja renomear, isso abrirá o menu de contexto e no menu de contexto, o usuário selecionará Renomear.

O título da guia mudará para uma caixa de texto e o usuário será capaz de escrever o nome da guia e, ao pressionar a tecla Enter no teclado ou clicar em qualquer lugar fora da caixa de texto, o título da guia será aplicado. Se o usuário pressionar a tecla ESC, iremos descartar as alterações.

image

2 - Clique duplo - título da guia

O título da guia mudará para uma caixa de texto e o usuário será capaz de escrever o nome da guia e, ao pressionar a tecla Enter no teclado ou clicar em qualquer lugar fora da caixa de texto, o título da guia será aplicado. Se o usuário pressionar a tecla ESC, iremos descartar as alterações.

O resultado final será semelhante a:

image

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

Comentários muito úteis

Observe que você também pode definir o título da linha de comando com title "new title" no cmd e $Host.UI.RawUI.WindowTitle = "new title" no PowerShell

Todos 56 comentários

O nome do Perfil não poderia ser usado para o título da guia por padrão, mas talvez uma opção para exibir um caminho?

O caminho geralmente está lá no pompt, então não tenho certeza se ele é necessário em ambos.

O caminho está lá porque é o que o shell _put_ lá. Para discussões sobre isso e os méritos dos títulos, # 608. Esta é uma pergunta ligeiramente diferente.

O nome do Perfil não poderia ser usado para o título da guia por padrão, mas talvez uma opção para exibir um caminho?

O caminho geralmente está lá no pompt, então não tenho certeza se ele é necessário em ambos.

Perfil mostra apenas o CMD ou PowerShell .. mas o que estou propondo é ser capaz de renomear Tab com um nome amigável.

Tenho certeza de que este é um subconjunto de uma das soluções que propus naquele tópico:

Se fôssemos com apenas 2 modos, poderíamos fazê-lo das duas maneiras possíveis:

  1. Adicione uma string opcional titleText:string ao perfil. Se estiver definido, exibiremos essa string em vez do título do terminal.

    • isso tem a desvantagem de não usar o nome do perfil como padrão. O usuário precisaria definir manualmente essa string.

    • se o nome do perfil for alterado, o usuário também terá que alterá-lo manualmente.

    • pode não ser muito claro que titleText significa que usaremos isso em vez do título do terminal, mas o ideal é que a IU de configurações explicará isso melhor, e a chave real não importa tanto.

O nome do Perfil não poderia ser usado para o título da guia por padrão, mas talvez uma opção para exibir um caminho?
O caminho geralmente está lá no pompt, então não tenho certeza se ele é necessário em ambos.

Perfil mostra apenas o CMD ou PowerShell .. mas o que estou propondo é ser capaz de renomear Tab com um nome amigável.

Renomear a guia implica que o nome estará lá até que a guia seja fechada. Minha sugestão seria permitir que um perfil tenha um nome escolhido pelo usuário

Porém, acho que deixo isso aberto para rastrear especificamente a adição de um botão na guia do menu do botão direito para definir o TitleText do perfil.



er, agora que digitei isso, talvez devêssemos ter um texto de tempo de execução para modificar. Estou pensando no caso em que um usuário tem várias guias com o mesmo perfil aberto. Se o usuário quiser renomear uma das guias, provavelmente não deseja que esse nome seja aplicado globalmente a cada uma das guias com aquele perfil. Eles provavelmente querem apenas renomear aquela guia _um_.

Portanto, isso deve envolver definir um sinalizador na guia que está usando um título de tempo de execução em oposição ao título do controle, e devemos apenas ignorar todas as alterações de título do controle. Se a configuração do título do perfil for alterada, também iremos ignorar isso.

Embora a questão aqui seja: se essa string personalizada se aplica à guia ou ao painel em foco? Eu provavelmente presumiria que se aplicaria ao Tab, não ao Pane.

@ zadjii-msft deve se aplicar à guia. Além disso, se for texto não criptografado, deve definir o sinalizador de tempo de execução como falso. Isso também habilitará a guia para começar a usar o nome do perfil.

@ carlos-zamora queria trabalhar em ações de guia, e acho que é um ajuste muito bom. Ele até sugeriu isso! Portanto, o negócio é o seguinte: há claramente três escolas de pensamento diferentes com relação ao título, então agora é Spec Needed . :sorriso:

@ carlos-zamora queria trabalhar em ações de guia, e acho que é um ajuste muito bom. Ele até sugeriu isso! Portanto, o negócio é o seguinte: há claramente três escolas de pensamento diferentes com relação ao título, então agora é Spec Needed . 😄

SIM! Eu realmente quero esse recurso. Definitivamente, uma questão de como isso interage com o shell / distro enviando um título até a guia (# 608). Também percebi que a ação de passar o mouse deve ser incluída nisso (ou seja: passar o mouse sobre a guia exibe o caminho completo abaixo do mouse [tente no Edge]). @cinnamon-msft e eu esboçaremos uma especificação em breve. Estamos super animados!

Suepr. Deixe-me saber como posso contribuir como desenvolvedor.

Observe que você também pode definir o título da linha de comando com title "new title" no cmd e $Host.UI.RawUI.WindowTitle = "new title" no PowerShell

Devemos usar # 608 para rastrear problemas de titulação de guia. Obrigado!

Observe que você também pode definir o título da linha de comando com title "new title" no cmd e $Host.UI.RawUI.WindowTitle = "new title" no PowerShell

Muito útil! Eu adicionei uma função ao meu perfil Powershell para me permitir defini-lo mais facilmente:

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

Observe que você também pode definir o título da linha de comando com title "new title" no cmd e $Host.UI.RawUI.WindowTitle = "new title" no PowerShell

Ao executar tarefas npm, como npm run serve , o título se tornará npm .

Uma maneira simples de definir um nome para as guias abertas ajudaria muito a torná-la ainda mais útil. Com várias guias do PowerShell abertas, acho difícil saber em qual estou tentando trabalhar.

@greggbjensen apenas use uma função ou apelido como o comentário de tvsbrent acima

@ phuclv90 um clique com o botão direito para definir rapidamente o nome ainda seria muito mais rápido e simples. Parece necessário se você planeja ter muitas guias. A capacidade de definir as cores das guias também seria uma boa adição.

Seria muito bom poder renomear as guias apenas clicando duas vezes nelas e definindo um novo título em algum tipo de caixa de texto. Este nome substitui o título original e permanece até que a guia seja fechada ou renomeada novamente.

Postado originalmente por @ Vasiliy-Bondarenko em # 3387

Permita renomear a guia com um nome amigável facilmente na IU, este é um recurso que estou usando constantemente com ConEmu e uma das razões pelas quais ainda não mudo para o Terminal do Windows, já que não é prático o suficiente quando você tem muitos "bem conhecidas "abas abertas, mas não consigo descobrir isso facilmente no Terminal do Windows

Acabei de descobrir que posso pelo menos contornar o título no WSL com uma função adicionada a .bashrc que pode ser chamada a partir do prompt, por exemplo, title "my title" :

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

Isso não é realmente uma _solução_, é a melhor, mais flexível e robusta maneira de definir o título de quase todas as janelas de terminal. Pode ser dinâmico, funcionar em SSH e incorporar itens disponíveis apenas no host remoto.

Modifiquei a solução postada por

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

Parece um pouco feio, mas se você colocar isso em seu ~/.bashrc , poderá chamar title <title_text> e definirá o título da guia / janela, mas não mexerá com o prompt padrão.

No iTerm no Mac posso fazer isso e é muito útil. Também posso definir a cor da guia, o que é muito bom.

Eu uso o Ubuntu WSL quase exclusivamente no Windows Terminal, e todas as minhas guias mostram " myname @ mycomputer / c / g ", onde "g" é a primeira letra do diretório raiz onde estão todos os meus projetos. É completamente inútil para mim. Sem dúvida, há uma maneira de mudar isso, mas uma maneira amigável seria boa.

:))) Estou usando WSL. Quero renomear a guia "meu monitor", usei: "meu monitor; fonte run.sh"

A estratégia de @quanticle acima é ótima para terminais locais, mas assim que você faz o ssh para um servidor diferente, ele reinicia o PS1 e você perde o título. Portanto, seria muito bom poder definir um rótulo persistente.

A estratégia de @quanticle acima é ótima para terminais locais, mas assim que você faz o ssh para um servidor diferente, ele reinicia o PS1 e você perde o título. Portanto, seria muito bom poder definir um rótulo persistente.

Para ser justo, solução @quanticle 's é _even melhor (!) _ Se você configurá-lo no servidor remoto também! Dessa forma, o título da janela pode refletir _qual servidor você está acessando atualmente_, e o shell pode inserir qualquer informação dinâmica que seria pertinente a uma sessão remota. Isso é algo que a substituição do título da guia local _nunca_ será capaz de realizar, mesmo que tenha sido implementado perfeitamente.

@ DHowett-MSFT Isso seria verdade se você quisesse que o título refletisse "em qual servidor você está", mas não necessariamente se quisesse que o título refletisse algo como uma "tarefa". Então, posso estar usando os mesmos vários servidores, mas para tarefas distintas, e quero manter essas tarefas em guias de terminal diferentes ... e quero que o nome persista enquanto alterno entre os servidores nessas guias ...

Agora, esta é a última e única razão pela qual eu não posso escolher wt como ferramenta de terminal principal no Windows.
:(

É por isso que o Terminal do Windows também não é útil para mim, acabo com várias guias chamadas de nó e não consigo alterá-las (mesmo depois de tentar alterar por meio do json e usar title e outras soluções).

Acabo com muitas guias chamadas de nó,

Ok, agora é um bom exemplo de um cenário que _ precisa_ disso, e apenas definir o formulário de título o shell não corrigirá. Obrigado pelo feedback!

Isso pode ajudar:

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

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

Para mim, essa tarefa é paridade com cmder / etc. Freqüentemente, tenho vários projetos abertos em uma pasta bin ou algo semelhante, portanto, poder aplicar rótulos personalizados seria útil.

Outro caso de uso seria para interagir sobre SSH para obter nomes de variáveis ​​de ambiente do Linux e combiná-lo com a última parte do caminho do diretório, exemplo de nome de guia:
$PROJECTROOT $CONFIG src/path/to/dir
(e, em seguida, cortar o início do caminho, saber que meu diretório está em algum lugar em / usuário / nome de usuário é menos útil do que saber o final do caminho)

Isso também deve ser configurável na linha de comando.

Então, quando estamos fazendo algo como:

wt.exe -p "profile1"

Devemos ser capazes de adicionar um argumento especificando o nome da guia, como:

wt.exe - "perfil1" -nome "nome para a guia 1"

Isso, é claro, funcionaria com todas as "novas guias" na linha de comando também.

Obrigada.

@mfeemster obrigado pela sugestão! Eu adicionei isso à mega lista de trabalho que estamos rastreando para argumentos de linha de comando em # 4632:

  • [] Adicione suporte para -t,--title title para definir o título inicial de uma nova sessão de terminal (adicionar a terminal_parameters )

aliás, se adicionar este recurso, a largura da aba da janela também deve ser considerada.
largura fixa de 16 caracteres desperdiça muito espaço para nomes curtos e também oculta informações importantes para nomes longos.

Eu sugiro :

  • a largura da guia deve ser de 4 a 24 caracteres, ajuste automático pelo nome da guia.
  • e remova os espaços em branco da cabeça / cauda.
  • se nenhum ícone for definido, remova o espaço também.
  • adicione uma opção de configuração para desativar o botão Fechar "X". suporta apenas o fechamento do menu do botão direito.

putty-tab
economize mais espaço para informações reais. 😃

@fanlix, você ficará feliz em saber que, em grande parte, suas solicitações já estão sendo rastreadas por

  • # 597 - Mais opções de tamanho de guia além de equal e sizeToContent
  • # 3327 - Opções de tema, incluindo a remoção do 'X'

Observe que você também pode definir o título da linha de comando com title "new title" no cmd e $Host.UI.RawUI.WindowTitle = "new title" no PowerShell

Isso é apenas para renomear o console.
Mas o objetivo dessa solicitação original é renomear as guias dentro do console.
Por favor, mantenha isso em mente :)

Isso é apenas para renomear o console.
Mas o objetivo dessa solicitação original é renomear as guias dentro do console.
Por favor, mantenha isso em mente :)

Você deve estar ciente de que alterar o título de "o console", quando o console estiver hospedado em uma guia, _alterará o título da guia_. :sorriso:

Você deve estar ciente de que alterar o título de "o console", quando o console estiver hospedado em uma guia, _alterará o título da guia_. 😄

Sim você está certo. :-)
Não notei a forma como isso foi implementado porque também renomeia o nome do console ...

Na verdade, o nome da guia na qual você se concentra atualmente torna-se o título do console na barra de tarefas.
E como consequência, se você trabalhar com vários consoles em paralelo (dedicado a várias tarefas com listas de guias remotas diferentes), os nomes dos consoles não são estáveis ​​e você deve pesquisar novamente: "Em qual console está a minha guia?"

No ISE, isso é separado.
Você tem para o nome do console na barra de tarefas:

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

e para os nomes das guias dentro do console, você tem:

$psISE.CurrentPowerShellTab.DisplayName = "tab title"

Um problema com $Host.UI.RawUI.WindowTitle = "new title" é que se eu executar npm run dev , o título da guia muda para npm

Cmder faz isso bem.

Esta é a ideia perfeita para o meu rastreador de produtividade que usa nomes de guias. Seria incrível automatizá-lo em tempo de execução. Meu trabalho em torno de:
(Eu sou atualizado toda vez que limpo o console, o que é muito bom 😝

## 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 }

Esta é a ideia perfeita para o meu rastreador de produtividade que usa nomes de guias. Seria incrível automatizá-lo em tempo de execução. Meu trabalho em torno de:
(Eu sou atualizado toda vez que limpo o console, o que é muito bom 😝

## 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 }

Oi. Por favor, qual rastreador você usa?

Oi. Por favor, qual rastreador você usa?

ManicTime
Agora, no linux, o ActivityWatcher também está bom, espero que cresça mais rápido :)

O PowerShell só ajuda se é isso que você está executando. Ao executar terminais ssh com o openssh, seria bom renomear as guias para saber em qual host estou. Ele pega o primeiro host que você acessa e, em seguida, é o que exibe, mas se você mudar de servidor, ele não será atualizado. Eu adoraria dar um clique-r para renomear a opção, ou mesmo alguma variável de ambiente que eu pudesse definir para ela pegaria.

Quer dizer, isso é apenas algo que você pode configurar nesses servidores. :)

Você diz isso quando estamos falando de mais de 1000 servidores. Estou tentando fazer isso no xshell e tenho um host bastião de onde pulo e procuro uma maneira fácil de controlar o nome do servidor. Com o xshell, isso é feito com script, eu uso para configurá-lo internamente.

Embora eu esteja jogando com printf \033]0; e pareça estar fazendo o que preciso.

: tada: Este problema foi resolvido em # 5775, que agora foi lançado com sucesso como Windows Terminal Preview v1.1.1671.0 .: tada:

Links úteis:

Nossa .. Parabéns equipe: D Desculpas, não participei muito do tópico .. mas estava acompanhando de perto. Isso me deu uma ótima ideia de como a Microsoft planeja os recursos .. Sempre confiei na Microsoft .. mas esse processo me deu uma espécie de garantia de que os recursos são pensados ​​em detalhes .. e com a qualidade em mente .. recurso pequeno como este como ele pode ser transformado em um ótimo recurso é o que este tópico realmente ensina.

Sim, parabéns à equipe.

Eu ainda sinto falta de uma coisa, poder clicar duas vezes na guia para renomeá-la, esse recurso está planejado?

Precisa ser capaz de definir uma combinação de teclas para renomear a guia (F2 por padrão faria sentido?)

@Inrego Você pode apenas clicar com o botão direito na guia para renomeá-la. Os atalhos da base de conhecimento me parecem algo necessário para ações que você executa com frequência, portanto, não deseja usar o mouse. Mas com que frequência você realmente renomeia uma guia durante o trabalho? Acho que o menu do botão direito é suficiente. Apenas meus 2 centavos.

@mfeemster um aplicativo de console me parece algo que não deveria exigir um mouse para funcionar.

Além disso, gostaria de automatizar as guias de nomenclatura em meu gerenciador de senhas ao efetuar login em um servidor.
Por enquanto, resolvi usar a paleta de comandos para abrir uma nova guia com o nome desejado. mas não é o ideal.

Existe um atalho KB para abrir uma nova aba. Eu diria que renomear uma guia pode ser uma ação executada com mais frequência do que abrir uma guia. Ou também há um atalho da KB para fechar todas as guias. Também é uma ação que é executada mais raramente. Só porque você raramente renomeia uma guia, não significa que pode assumir que é uma ação rara para todos. O que estou tentando dizer, não deveria ser o motivo para implementá-lo ou não, pois é muito subjetivo e varia de pessoa para pessoa.

Precisa ser capaz de definir uma combinação de teclas para renomear a guia (F2 por padrão faria sentido?)

Você pode fazer isso com uma ligação de tecla para renameTab , mas agora você só pode codificar um título. Há um PR aberto (# 7462) que adiciona openTabRenamer . Precisamos circular de volta para esse PR aberto.

É exatamente disso que preciso, obrigado. Eu vou seguir aquele PR

Esta página foi útil?
0 / 5 - 0 avaliações