Terminal: Solicitação de recurso: tecla de atalho suspensa ala quake / guake / tilda

Criado em 10 mai. 2019  ·  106Comentários  ·  Fonte: microsoft/terminal

A coisa mesquinha que mais sinto falta quando entro no Windows é ter um terminal de tecla de atalho separado para cada um dos meus três monitores. O mais perto que estive de acreditar em Deus foi quando percebi que isso era possível e, se você pudesse fazer isso no Windows, eu teria que beijar você.

Area-User Interface Help Wanted Issue-Feature Product-Terminal

Comentários muito úteis

O modo de terremoto seria um requisito para eu mudar do ConEmu. No entanto, eu prefiro que ele sempre abra a mesma instância, independentemente de qual monitor / área de trabalho virtual está atualmente em foco.

Pessoalmente, eu uso win + til para abrir o ConEmu, mas obviamente o atalho deve ser configurável.

Todos 106 comentários

Então você quer dizer que se você tiver três monitores (por exemplo), você poderia apertar uma tecla de atalho diferente para fazer o terminal deslizar para baixo no estilo console de terremoto de qualquer monitor que você escolher?

Então você quer dizer que se você tiver três monitores (por exemplo), você poderia apertar uma tecla de atalho diferente para fazer o terminal deslizar para baixo no estilo console de terremoto de qualquer monitor que você escolher?

Exatamente exatamente. Eu sei que parece um pouco estranho / desnecessário / enigmático para o que pretende ser um terminal mainstream muito usado, mas eu prometo a você que a produtividade é o que realmente faz brilhar as teclas de atalho.

O ideal é que cada monitor tenha seu próprio terminal que pode ser mantido aberto simultaneamente com os outros.
No nix, usando 3 instâncias de Tilda, tenho que configurá-lo para que f1 abandone, feche ou selecione se estiver aberto, mas não ativo, o monitor esquerdo. F2 faz a minha tela central e F3 faz a minha direita. Posso usar essas teclas de atalho para pular entre esses três terminais se eles também estiverem abertos. O resultado final torna a movimentação entre terminais e outros aplicativos em segundo plano um sonho de fluxo de trabalho. Também parece muito legal, se eu mesmo disser.

Guake, outra alternativa que gosto, está limitada a apenas uma janela / instância por vez e simplesmente desce em qualquer monitor em que o mouse esteja no momento em que a tecla de atalho é pressionada. Este também é um recurso muito bom, mas não é o que estou procurando. Eu não me oporia a uma escolha de comportamento, mas linhas de código não crescem em árvores, então feitas para escolher eu prefiro o design tilda.

Nós realmente estamos estragados em termos de terminal no lado nix das coisas e é isso que faz a Microsoft se esforçar para construir um novo terminal mais avançado e rico em recursos tão empolgante. Realmente parece que a Microsoft está lutando pelo tempo que os desenvolvedores e futuros desenvolvedores (estudante aqui) gastam em seus sistemas operacionais e se você emparelhar o WSL2 com um terminal suspenso, eu sei que gastaria muito menos tempo reiniciando e adiante entre Mint e 10.

O modo de terremoto seria um requisito para eu mudar do ConEmu. No entanto, eu prefiro que ele sempre abra a mesma instância, independentemente de qual monitor / área de trabalho virtual está atualmente em foco.

Pessoalmente, eu uso win + til para abrir o ConEmu, mas obviamente o atalho deve ser configurável.

Sim, uma instância caindo, deve cair no monitor onde o cursor do mouse está e deve focar, mas não deve aparecer quando você está usando Alt + Tab, então parece que está embutido no sistema operacional. Como guake.

@cyberhck tem certeza de que deveria estar onde o mouse está, e não onde está a janela em foco no momento?

@Jaykul
O comportamento padrão do Guake é tal que a tecla de atalho ativa o terminal em qualquer monitor que o mouse reside atualmente como Cyberhck descrito. Ele também tem a opção de atribuir um monitor específico, se desejado. É limitado apenas porque apenas uma instância pode ser executada por vez, algo com o qual o Windows Terminal não tem problemas. Se o Windows Terminal pudesse ser configurado da maneira que o guake é, com a escolha entre comportamento estático ou seguir, tudo o que ele precisaria são configurações independentes por instância para corresponder à funcionalidade de ambos guake (seguir ou estático) e tilda (várias instâncias).

Sim, poderíamos ter uma configuração de 3 vias, uma em um monitor específico, uma em qualquer janela em foco, e uma onde o mouse está presente, (também é muito importante ter uma opção para ocultar da lista de aplicativos (alt + tab) se este modo está ativado, porque imagino que os usuários não vão querer ver isso ao alternar entre IDE e navegador

:)

@Jakul , digo onde o mouse está presente é porque quando você está navegando em algo, é provável que o mouse esteja sempre na frente de seus olhos, e se você estiver usando teclas curtas, é muito fácil mudar de olhar. do que ter que mover o mouse até o fim.

+1

Não responda aos tópicos com um "+1" sem fornecer comentários adicionais úteis. O Github tem um +1 perfeitamente bom que não envia ping para todos na caixa de entrada do tópico aqui:
image

Então você quer dizer que se você tiver três monitores (por exemplo), você poderia apertar uma tecla de atalho diferente para fazer o terminal deslizar para baixo no estilo console de terremoto de qualquer monitor que você escolher?

O comportamento padrão em vários monitores para Guake é onde quer que o mouse esteja, é onde o terminal cai.

No entanto, você pode configurá-lo para cair em qualquer monitor que desejar por meio das configurações, se não quiser esse comportamento.

O que preciso com isso é a capacidade de desativar a animação e ocultar a janela completamente (da barra de tarefas, alt + tab, win + tab etc.)

A opção adicional de nunca mostrar o botão da barra de tarefas também seria desejada por mim, mas pode estar fora do escopo para este problema

Amei a proposta, e é a única coisa que deixaria de usá-la diariamente (uma vez lançada). Adoro usar o ctrl + `no ConEmu e nem uso o terminal integrado VSCode por causa disso. No entanto, não tenho certeza se me importo muito com a vinculação de teclas por ideia de monitor.

Além disso, esta proposta incluiria o início de uma instância do terminal se nenhum estivesse em execução, semelhante a outros termos do Linux, como o menu suspenso do terminal xfce com atalho do aplicativo ? Eu não me importaria se fosse Win + `como um atalho do sistema, semelhante ao Win + \

Isso seria possível com o atalho existente em algum lugar com uma tecla de atalho global associada a ele e esse atalho usando a CLI para chamar a alternância se alguma instância já estiver em execução. Torná-lo uma tecla de atalho em todo o sistema parece uma má ideia, imo

Eu consideraria desenvolver mais no Windows (atualmente 95% feito no Linux) se eu tivesse um terminal que pudesse cair como o guake.

Eu uso principalmente cmder / conemu no windows e este também é o principal motivo pelo qual não estou trocando ainda, especialmente porque estou usando dois monitores e (normalmente) 3 desktops, sem uma forma global de apenas chamar o terminal I essencialmente tem 6 lugares onde a janela real poderia estar, parece bobo, mas é irritante.

Além disso, muitos de vocês mencionam o uso de um atalho de teclado para isso, mas todos vocês devem considerar mapea-lo em um botão de mouse dedicado também e, se possível, em gestos. Me agradeça depois.

Fico feliz em ver que outras pessoas estão entusiasmadas com a ideia de um terminal suspenso configurável. É claro que as pessoas têm preferências muito distintas sobre como esses menus suspensos se comportam por padrão, mas acreditam que a preferência de quase todos se torna possível, desde que

  1. Cada instância pode ser configurada para acompanhamento do mouse ou vinculação a um monitor.
  2. Cada instância pode ter sua própria tecla de atalho.

Então, não importa o que você gosta, está dentro do reino das possibilidades configuráveis.

Eu pessoalmente uso uma combinação de terremoto e tilda para ter um terminal ligado a cada tela e outro que segue o mouse.

@NOFUNEVER você tem a maior parte do que as pessoas estão pedindo certo, mas @cyberhck e @zakius identificaram alguns outros recursos que podem ser importantes:

  • Adicione o foco da janela à lista de opções de configuração, além de monitorar a vinculação / acompanhamento do mouse.
  • Deve haver opção configurável para não mostrar na alt-tab / barra de tarefas?

Parece que ainda há discussão se isso deve ter várias instâncias, como tilda (que nunca usei e não posso comentar), ou uma única instância, como Guake. Estou perdendo mais alguma coisa? Caso contrário, devemos resolver essa questão e passar a escrever uma especificação.

( @zakius , você também mencionou o desejo de desativar a animação suspensa. Motivo? Não vejo nada de errado nisso, mas uma justificativa ajudaria.)

No geral, não gosto de animações, pois roubam meu foco (se algo se mover instintivamente, olhe para ele, no passado, isso poderia salvar sua vida). Mas também existem o que eu chamo de blocking animations , aqueles pelos quais você tem que esperar antes de agir, impedindo você de ler o texto ou emitir comandos de entrada. Eles são ainda mais perturbadores para o fluxo de trabalho, pois você não tem outra escolha a não ser esperar; alguns deles foram projetados para marcar uma execução lenta, mas em máquinas rápidas eles o deixam lento.

A melhor abordagem seria poder escolher o tempo de animação com 0 desativando-o completamente

não queremos animação como o mac que é muito lento, mas o guake termina a animação em menos de 100ms, eu acho, então é rápido, talvez o atraso possa ser uma configuração também, 0 para nenhuma animação. A animação do Guake parece "perfeita", é muito rápida, mas você pode ver de onde vem ou para onde está indo.

Adicionar configuração seria incrível, já que quem não gosta de animação pode desabilitá-la, ou transformá-la em uma animação lenta como o mac, eu faria 80ms ou 120ms.

Ahh como eu queria que o ConEmu fosse uma solução para mim, ele não funciona para todos, é construído em cima da tecla de atalho e qualquer coisa em cima da tecla de atalho é detectado como trojan (alarme falso).

Muitas pessoas estão usando o terminal para trabalhar, e seu trabalho não permite que instalem algo que é detectado como um trojan. (igual a Qonsole) https://github.com/joedf/Qonsole/issues/9

Outra coisa importante a considerar ao implementar isso é que o menu suspenso deve aparecer na área de trabalho virtual ativa no momento. Eu uso bastante desktops virtuais. Quando comecei a usar o ConEmu, descobri que o terminal suspenso sempre me movia de volta para a área de trabalho 1 e, em seguida, mostrava o menu suspenso. Acabei encontrando as configurações para fazê-lo funcionar conforme o esperado no ConEmu, e é fundamental que o Windows Terminal se comporte da mesma maneira.

Sim, isso deveria ter sido óbvio na verdade: D imagine apertar a tecla de atalho e o terminal aparecendo no primeiro quando você estiver em outro espaço de trabalho.

Então, até que nossos overlords adicionem isso ao terminal, criei um pedaço simples de C # que corrige isso para mim nesse meio tempo: https://github.com/flyingpie/windows-terminal-quake.

Ele desce no estilo Quake usando CTRL + ~ e CTRL + Q, que é totalmente mutável, é claro. Atualmente faz cair em tela cheia e desce na tela + área de trabalho onde o mouse está.

Caso alguém seja sorteado, estou aberto a sugestões e / ou RPs.

@flyingpie Esse é um código bem legal que você tem aí. Parece que a maior parte dele também funcionaria em c ++, então é bom saber.

Só quero reiterar que, embora ninguém na equipe tenha os ciclos para fazer isso para 1.0, seria um prazer revisar uma contribuição da comunidade. O ideal é que alguém na comunidade seja capaz de compilar as sugestões e comentários deste tópico no Modelo de Especificação e enviar um PR para essa especificação. Assim que essa especificação for aprovada, ficaremos felizes em revisar um PR com a mudança de código necessária. Parece-me que @flyingpie tem realmente 90% do básico, seria principalmente polir os casos

Eu tenho um caso de uso semelhante. Eu não uso o estilo Quake, mas gosto muito do terminal sempre aberto.

Minha configuração ConEmu faz o seguinte que parece não ter wt.exe até agora (em ordem aproximada de importância):

  1. Meu ConEmu literalmente não fecha, exceto no desligamento ou quando explicitamente solicitado. Se eu fechar a última guia, ela ainda estará aberta sem nenhuma guia.
  2. Ele sempre inicia no mesmo local. (0,0) no meu segundo monitor.
  3. Eu tenho uma tecla de atalho global para alternar o foco dele (ctrl + `).
  4. Ele não aparece na barra de tarefas. Tem um ícone na bandeja.
  5. Você só pode iniciar uma instância dele.
  6. Ele é iniciado automaticamente após o login do Windows. (importante para o seguinte)
  7. É o terminal padrão, consumindo automaticamente outros terminais (IE, se eu 'Executar' wt.exe e, em seguida, executar cmd.exe, esperaria que wt.exe apenas abrisse uma nova guia com a nova guia cmd.exe) *

Todos esses são basicamente bloqueadores para eu mudar para wt.exe do ConEmu.

Além disso:

  • Algumas pessoas gostariam de estar sempre no topo.
  • Algumas pessoas desejam minimizar na perda de foco e geralmente desejam desativar a animação de minimização / maximização.
  • Alguns querem que o terminal salte para o monitor 'ativo' quando estiver focado.
  • Alguns querem várias instâncias de terminal? *

Todos esses são recursos diferentes que devem ter suas próprias especificações IMO. Estou disposto a conduzir parte desse processo de especificação. @zadjii-msft Você conhece algum desses marcadores que já têm especificações, não serão realizados por algum motivo, etc?

* Complicado?

Então, você listou uma série de problemas separados, deixe-me ver se consigo vincular todos eles:

  1. # 2080 é a especificação WIP para este recurso, que se tornará uma especificação enorme quando estiver pronto.
  2. # 1043 provavelmente não precisa de uma especificação TBH, só precisa de alguém para fazer o trabalho
  3. # 653 (este problema)
  4. Francamente, não ouvi o pedido para não tê-lo na barra de tarefas antes. Então isso definitivamente não tem seu próprio problema. Ter um ícone na bandeja parece necessário para não ter um ícone na barra de tarefas, então provavelmente pode ser uma única especificação / tarefa
  5. Isso se enquadra no item # 2080
  6. # 2189
  7. # 492 está rastreando isso, mas provavelmente exigirá algumas mudanças no sistema operacional. Isso também aparece com frequência em # 2080.
  8. Eu poderia jurar que isso tinha seu próprio problema, mas parece que não.
  9. Nunca ouvi esse pedido antes, mas parece legal para mim
  10. Parece vagamente semelhante a este recurso TBH. Talvez devêssemos considerar esses dois cenários nesta especificação?
  11. Não tenho certeza do que você quer dizer neste ponto - você quer dizer painéis, como # 1000?

Destes, # 1043, # 653, # 2189 estão marcados como "Procura-se Ajuda" 😉

Eu mencionei 4. antes, e para ter certeza de que Terminal não apareça em Alt + Tab nem em Win + Tab quando a janela estiver oculta

várias instâncias significam várias janelas que podem, mas não precisam ser espalhadas por várias telas ou desktops virtuais, presumo, mas isso tornaria o manuseio de teclas de atalho globais muito mais complexo ou até mesmo impossível (acho que o conemu desativa várias instâncias ao ativar o modo de terremoto)

Para 11 / "várias instâncias significam várias janelas", quero dizer especificamente o que o OP descrito aqui: https://github.com/microsoft/terminal/issues/653#issuecomment -491389892

Eu particularmente não me importo com isso, mas é um problema relacionado à parte. Eu acho que eles querem várias teclas de atalho globais para abrir / ativar / focar várias instâncias da mesma forma que eu quero uma tecla de atalho para o item # 3 da minha lista.

@zakius

Eu mencionei 4. antes, e para ter certeza de que Terminal não apareça em Alt + Tab nem em Win + Tab quando a janela estiver oculta

várias instâncias significam várias janelas que podem, mas não precisam ser espalhadas por várias telas ou desktops virtuais, presumo, mas isso tornaria o manuseio de teclas de atalho globais muito mais complexo ou até mesmo impossível (acho que o conemu desativa várias instâncias ao ativar o modo de terremoto)

Múltiplas instâncias desativadas é o que acontece no ConEmu quando o menu suspenso de terremoto é usado.
É quase impossível lidar com esse comportamento de uma maneira lógica, você deve utilizar suas guias ou usar um multiplexador de terminal se quiser algo como várias instâncias COM menu suspenso de terremoto.

EDITAR:
Você possivelmente poderia trabalhar em algo onde a primeira janela do terminal aberta é a master e esta é a janela que sempre é chamada ao usar a tecla de atalho Quake.

Pode ser complicado trabalhar isso com suporte a guias - talvez seja por isso que nenhum outro terminal que eu conheço oferece suporte a esse comportamento. Há também alguns casos extremos a considerar nesse cenário, como o que acontece se você fechar sua janela mestre principal e houver uma janela secundária ainda aberta - a tecla de atalho continuaria ignorando esta janela de terminal secundária etc.

Para ConEmu, quando o Quake está habilitado e você tenta abrir o ConEmu novamente (digamos do atalho da área de trabalho), ele não abrirá uma nova janela, em vez disso, apenas trará o foco do terminal em execução existente.

Você possivelmente poderia trabalhar em algo onde a primeira janela do terminal aberta é a master e esta é a janela que sempre é chamada ao usar a tecla de atalho Quake.

há também a possibilidade de permitir a execução de uma única instância por tela física por desktop virtual e desta forma a tecla de atalho principal sempre abriria a instância em seu VD e tela ativos atuais, mas isso é muito complicado, acho que desabilitar várias instâncias é razoável

Acho que várias instâncias podem ser ignoradas se as guias continuarem sendo aprimoradas e a janela em estilo terremoto puder ser chamada de qualquer lugar. Pelo menos por enquanto.

há também a possibilidade de permitir a execução de uma única instância por tela física por desktop virtual e desta forma a tecla de atalho principal sempre abriria a instância em seu VD e tela ativos atuais, mas isso é muito complicado, acho que desabilitar várias instâncias é razoável

Eu não iria ignorar várias instâncias inteiramente - às vezes é muito útil ter aberto um terminal em uma tela que transmite logs ou mostra a carga do sistema enquanto trabalha em outro terminal em uma tela adjacente.

Já usei o desktop Ubuntu nos últimos anos (voltei ao Windows desde o WSL v2) e, uma vez que o Guake e o terminal Ubuntu são muito semelhantes em termos de capacidade de resposta, design de interface do usuário / temas, etc. Eu costumava abrir o terminal padrão do Ubuntu na minha tela vertical assistindo logs e carga do sistema.

Obviamente, essa é a maneira mais fácil de contornar o problema se várias instâncias com menu suspenso estiverem desativadas - Use um terminal diferente.
O problema é que a maioria dos terminais do Windows são lixo completo (daí este projeto ofc).

as instâncias extras foram com vários monitores em mente quando sugeri
isto. Um por monitor, cada um com sua própria tecla de atalho. Eu uso um retrato de paisagem
retrato criado em casa e durante a execução do mint tem guake em execução no
center, mas não oferece as instâncias extras que tilda tem, então eu uso
os monitores de retrato exteriores.

Na segunda-feira, 16 de setembro de 2019 às 14h, nofunatall [email protected] escreveu:

há também a possibilidade de permitir a execução de uma única instância por
tela física por desktop virtual e desta forma a tecla de atalho principal sempre
abrir a instância em seu VD e tela ativos atuais, mas isso
muito complicado, acho que desativar várias instâncias é razoável

Eu não iria ignorar várias instâncias inteiramente - às vezes é muito útil
ter aberto um terminal em uma tela que transmite registros ou mostra o sistema
carregar enquanto trabalha em outro terminal em uma tela adjacente.

Eu já usei o desktop Ubuntu nos últimos anos (apenas
voltou para o Windows desde WSL v2) e desde Guake e o terminal Ubuntu
são muito semelhantes em termos de capacidade de resposta, design / temas da interface do usuário, etc.
tinha o terminal padrão do Ubuntu aberto na tela vertical, observando os logs
e carga do sistema.

Essa é obviamente a maneira mais fácil de contornar o problema se várias instâncias com
o menu suspenso está desativado - Use um terminal diferente.
O problema é que a maioria dos terminais do Windows são lixo completo (portanto,
projeto ofc).

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/microsoft/terminal/issues/653?email_source=notifications&email_token=ACAH5BIA5ZPETCBZK77LMVLQJ7XYVA5CNFSM4HL735C2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62QC3Q#issuecomment-531956078 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/ACAH5BM722EZEB5LQBXGW6TQJ7XYVANCNFSM4HL735CQ
.

Pessoal, claramente temos dois problemas separados aqui. Podemos editar este para ser apenas sobre a tecla de atalho "estilo Quake" (terminal global / único)?

Em seguida, um segundo problema, que seria bloqueado por este, para permitir a atribuição de uma tecla de atalho "estilo Quake" dedicada a uma tela diferente.

O primeiro parece ser o mais popular e desejado. Eu adoraria ver o segundo um também (cool ideia @NOFUNEVER nunca pensou em tal característica, parece útil), mas seria bom se pudéssemos esclarecer o tópico um pouco.

O problema do OP é na verdade mais do segundo, apesar do nome do problema. Independentemente disso, acho que ter uma tecla de atalho aberta em um único terminal é bloqueado pelo # 2080. Não podemos realmente ter uma tecla de atalho aberta em um único terminal até que possamos impor um único terminal.

https://github.com/microsoft/terminal/issues/653#issuecomment -520419611

Este é o melhor detalhamento, eu acho.

@rlabrecque Sim, eu sei que o problema original estava relacionado a uma solução mais sofisticada, mas olhando para os comentários a maioria das pessoas expressou um desejo pelo estilo "terremoto" apenas, muito menos pessoas estavam interessadas em teclas de atalho personalizadas para qualquer exibição.

É por isso que propus converter este problema em um relacionado ao estilo terremoto e extrair a solicitação de recurso de acompanhamento para um problema separado, onde também poderemos rastreá-lo.

Parece-me que isso precisa ser dividido em vários problemas para cada um dos vários recursos, começando com o recurso fundamental de atalho para alternar a visibilidade. Isso pode ser feito sem nenhum dos outros recursos, certo?

Com vários problemas, seria muito mais fácil ver qual era a demanda para cada variação específica na receita e priorizar o desenvolvimento. Parece que o recurso mínimo viável coçaria muitas pessoas.

Não é isso que o comentário https://github.com/microsoft/terminal/issues/653#issuecomment -520419611 está descrevendo?

Para qualquer um que esteja esperando que isso mude do conemu (como eu), etc. Você pode usar o autohotkey e um item da barra de tarefas fixada como solução alternativa.

script autohotkey:

^`::Send #5

Isso mapeará ctrl + `para winkey + 5, altere isso de acordo com suas necessidades.

a ferramenta fornecida pelo flyingpie é muito melhor: não requer fixação e oculta o botão da barra de tarefas completamente, tbh estou usando-a com outro aplicativo (já que o Terminal também perde algumas outras coisas)

Levando a solução AutoHotKey um pouco mais longe:

#SC29::ToggleTerminal()

ShowAndPositionTerminal()
{
    WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

    WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, -5, -10, A_ScreenWidth + 10, A_ScreenHeight * 0.7,
}

ToggleTerminal()
{
    WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

    DetectHiddenWindows, On

    if WinExist(WinMatcher)
    ; Window Exists
    {
        DetectHiddenWindows, Off

        ; Check if its hidden
        if !WinExist(WinMatcher) || !WinActive(WinMatcher)
        {
            ShowAndPositionTerminal()
        }
        else if WinExist(WinMatcher)
        {
            ; Script sees it without detecting hidden windows, so..
            WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
            Send !{Esc}
        }
    }
    else
    {
        Run "c:\Users\kim\AppData\Local\Microsoft\WindowsApps\wt.exe"
        Sleep, 1000
        ShowAndPositionTerminal()
    }
}

Este script vincula win + ½ (no teclado dinamarquês, o botão superior esquerdo abaixo de escape) a uma função que traz uma instância de terminal em execução em foco, ou inicia uma nova instância se não estiver em execução e a redimensiona e posiciona "corretamente". Se o terminal já estiver em foco, ele esconde a janela (para que não apareça em alt + tab).

Atualizei um pouco a solução

Você pode encontrar o código em minha essência aqui ou copiá-lo diretamente abaixo:

; How much height of screen size the terminal window takes.
VRatio := 0.8
; The path to the Windows Terminal exe file.
WtPath = "%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe"

#SC29::ToggleTerminal()

ShowAndPositionTerminal()
{
    ScreenX := GetScreenLeft()
    ScreenY := GetScreenTop()
    ScreenWidth := GetScreenWidth()
    ScreenHeight := GetScreenHeight()
    global VRatio

    WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

    WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, ScreenX-5, ScreenY-10, ScreenWidth+10, ScreenHeight * VRatio,
}

ToggleTerminal()
{
    WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

    DetectHiddenWindows, On

    if WinExist(WinMatcher)
    ; Window Exists
    {
        DetectHiddenWindows, Off

        ; Check if its hidden
        if !WinExist(WinMatcher) || !WinActive(WinMatcher)
        {
            ShowAndPositionTerminal()
        }
        else if WinExist(WinMatcher)
        {
            ; Script sees it without detecting hidden windows, so..
            WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
            Send !{Esc}
        }
    }
    else
    {
        global WtPath
        Run %WtPath%
        Sleep, 1000
        ShowAndPositionTerminal()
    }
}

; Gets the edge that the taskbar is docked to.  Returns:
;   "top"
;   "right"
;   "bottom"
;   "left"
GetTaskbarEdge() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,

  if (TW = A_ScreenWidth) { ; Vertical Taskbar
    if (TY = 0) {
      return "top"
    } else {
      return "bottom"
    }
  } else { ; Horizontal Taskbar
    if (TX = 0) {
      return "left"
    } else {
      return "right"
    }
  }
}

GetScreenTop() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "top") {
    return TH
  } else {
    return 0
  }
}

GetScreenLeft() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "left") {
    return TW
  } else {
    return 0
  }
}

GetScreenWidth() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "top" or TaskbarEdge = "bottom") {
    return A_ScreenWidth
  } else {
    return A_ScreenWidth - TW
  }
}

GetScreenHeight() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "top" or TaskbarEdge = "bottom") {
    return A_ScreenHeight - TH
  } else {
    return A_ScreenHeight
  }
}

Não quero continuar a desviar esse pedido de recurso, mas gostaria de compartilhar as mudanças que fiz no trabalho que @wizcas e @kimbirkelund já fizeram. Nunca usei o AHK antes, então é meio hackeado, mas resumindo, adicionei um menu e um arquivo de configurações para que você possa alterar o seguinte:

  • altura terminal
  • opacidade terminal
  • tipo e tamanho da fonte do terminal
  • esquema de cores

Tudo isso sem recompilar o arquivo ou abrir o arquivo JSON e editá-lo manualmente. Ele salva as configurações não profile.json (por exemplo, tamanho do terminal) em seu próprio arquivo settings.ini no mesmo diretório. Fico feliz em aceitar mudanças nele se alguém quiser contribuir. Eu também irei em algum momento adicionar um criador de tema aqui, pois foi um pouco trabalhoso converter um tema Monokai que estou usando atualmente (no meu ponto central, se alguém quiser descobrir). Aqui está uma pequena prévia do menu de configurações:

image

EDITAR: captura de tela atualizada

Você pode obter o código aqui: https://gist.github.com/alenbasic/004c5abeb4cc0e0b31b7681371d48898

Um dos problemas de duplicação vinculados mencionados inclui suporte ao modo de controle tmux, algo que atualmente só é compatível com o iTerm no Mac OS. É uma funcionalidade incrivelmente poderosa, mas que eu saiba, todas as tentativas de implementá-la em outros terminais resultaram em uma morte silenciosa de garfos sem manutenção. Seria incrível tê-lo fora do Mac OS.

Eu fui em frente e comecei um projeto, basicamente por causa desse recurso. https://github.com/dotjosh/WinTermPlus

@dotjosh Isso parece ótimo! Existe algum motivo pelo qual você implementou isso como uma ferramenta autônoma e não um PR? Quanto esforço seria para fundi-lo?

@dotjosh Isso parece ótimo! Existe algum motivo pelo qual você implementou isso como uma ferramenta autônoma e não um PR? Quanto esforço seria para fundi-lo?

Sou forte em C # / WPF e consegui fazer isso rapidamente. Eu estaria disposto a ajudar a portá-lo se estivermos satisfeitos com o comportamento.

Sinceramente, acho isso muito legal. Eu definitivamente ficaria feliz em revisar esse PR.

Pode ser um pouco complicado portar os bits da bandeja da barra de tarefas para o modelo mais parecido com UWP que temos (você provavelmente precisará mexer com o package.appxmanifest), mas este tutorial parecia bom . Provavelmente, também faria mais sentido colocar as configurações de tamanho para abrir a janela em profiles.json , e ter o vínculo definido lá também (mesmo que não faça nada no TerminalApp, já que presumo que a ligação precisaria ser registrada no próprio SO. Tenho certeza de que há uma maneira de fazer isso em C ++, embora não saiba o que é 😄

Apenas citando algo que eu disse antes:

Só quero reiterar que, embora ninguém na equipe tenha os ciclos para fazer isso para 1.0, seria um prazer revisar uma contribuição da comunidade. O ideal é que alguém na comunidade seja capaz de compilar as sugestões e comentários deste tópico no Modelo de Especificação e enviar um PR para essa especificação. Assim que essa especificação for aprovada, ficaremos felizes em revisar um PR com a mudança de código necessária. Parece-me que @flyingpie @dotjosh tem realmente 90% do básico, seria principalmente polir os casos

Honestamente, não precisamos realmente de _tudo_ no modelo de especificações preenchido, eu realmente gostaria de ter certeza de que qualquer contribuição que aceitarmos tenha pensado nos casos extremos aqui e defina claramente o comportamento para esses casos. Nomeadamente:

  • O que acontece quando o usuário ainda não tem uma instância do Terminal aberta e pressiona a tecla de atalho global?
  • O que acontece quando o usuário tem várias janelas do Terminal abertas? Qual abre? _Nada_ acontece nesse caso?

    • Com várias janelas de terminal abertas e um terminal focado no momento, a tecla de atalho global oculta a janela ativa ou chama uma minimizada?

  • O usuário pode escolher que a janela apareça maximizada? Tela cheia?
  • O que acontece quando o usuário ainda não tem uma instância do Terminal aberta e pressiona a tecla de atalho global?

Acho que depende do que exatamente é a instância do Terminal. Se o Terminal não estiver funcionando, nada deve acontecer. Eu não acho que deveria haver um serviço ou algo assim. Se não houver mais shells no Terminal, ele ainda deve estar em execução, aguardando a abertura de um novo shell. Sair do Terminal precisaria ser mais explícito.

  • O que acontece quando o usuário tem várias janelas do Terminal abertas? Qual abre? Nada acontece nesse caso?
  • Com várias janelas de terminal abertas e um terminal focado no momento, a tecla de atalho global oculta a janela ativa ou chama uma minimizada?

Acho que a suposição geral é que esse modo permitiria apenas uma instância de terminal. Iniciar o executável uma segunda vez simplesmente focalizaria o terminal, possivelmente lançando um novo shell padrão nele? (Muito parecido com a função de aplicativos UWP. Abra Configurações, concentre-se em outra coisa e, em seguida, abra Configurações novamente, apenas uma instância.)

  • O usuário pode escolher que a janela apareça maximizada? Tela cheia?

Não vejo por que não se ambos são suportados atualmente. 👍 A tecla de atalho funcionaria quase da mesma forma que minimizar / restaurar de minimizado em ambos os casos.

Posso sugerir começar com a experiência do usuário de outros terminais populares e alterá-la a partir daí, se eles estiverem abaixo do ideal?

  • O que acontece quando o usuário ainda não tem uma instância do Terminal aberta e pressiona a tecla de atalho global?

Nada, porque o terminal não está funcionando. Além disso, a tecla de atalho deve ser liberada para outros programas usarem neste caso. É assim que ConEmu e Terminator se comportam.

  • O que acontece quando o usuário tem várias janelas do Terminal abertas? Qual abre? Nada acontece nesse caso?

Se a configuração de instância única estiver ativa: não pode haver várias janelas abertas.

Se a configuração de instância única não estiver ativa, o Terminator envia o comando para todas as instâncias e todas elas alternam os estados. Esta pode ser a solução mais simples; não faz muito sentido usar o modo quake com várias instâncias e, dessa forma, os terminais não ficarão permanentemente presos no estado oculto (o terminador oculta a janela da barra de tarefas no estado oculto).

ConEmu: habilitar o modo quake reforça o modo de instância única e esmaece a caixa de seleção. Isso faz mais sentido em termos de comportamento, mas introduz mais complexidade.

Não acho que a ausência do modo de instância única (# 2227) deve atrapalhar a implementação dessa funcionalidade.

  • Com várias janelas de terminal abertas e um terminal focado no momento, a tecla de atalho global oculta a janela ativa ou chama uma minimizada?

Veja acima - ambos. Ele alterna seus estados.

  • O usuário pode escolher que a janela apareça maximizada? Tela cheia?

Tanto no ConEmu quanto no Terminator, isso não é relevante para o modo quake, a janela é restaurada para o estado em que estava antes de ser alternada para oculta. Se estiver em tela inteira, ele será restaurado em tela inteira; mesmo para janelas maximizadas e não maximizadas.

apenas sendo um pouco minucioso: nenhum dos terminais populares usa tela inteira real (exclusiva), mas pode ser processado sem bordas

e acho que é muito melhor para o caso de uso

Do ponto de vista do usuário, a principal diferença entre "tela cheia" e janela maximizada parece ser que "tela cheia" cobre a barra de tarefas.
-------- Mensagem original -------- De: zakius [email protected] Data: 15/11/2019 22:38 (GMT + 00: 00) Para: microsoft / terminal terminal @ noreply.github.com Cc: Igroeg Okiob [email protected] , Comentário [email protected] Assunto: Re: [microsoft / terminal] Solicitação de recurso: menu suspenso de teclas de atalho ala
quake / guake / tilda (# 653) apenas sendo um pouco minucioso: nenhum dos terminais populares usa tela inteira real (exclusiva), mas pode ser processado sem bordas
e acho que é muito melhor para o caso de uso

—Você está recebendo isto porque comentou. Responda a este e-mail diretamente, visualize-o no GitHub ou cancele a inscrição.
[
{
"@context": " http://schema.org ",
"@type": "EmailMessage",
"potencialAção": {
"@type": "ViewAction",
"target": " https://github.com/microsoft/terminal/issues/653?email_source=notifications\u0026email_token = AB2TW7D3V347CBC62MCQ32TQT4QHVA5CNFSM4HL735C2YY3PNVWWWK3TUL52BOC62MQ32TQT4QHVA5CNFSM4HL735C2YY3PNVWWWK3TUL52BZ45W45WH48H64WH64WH64WH64WH8WORY5EVREM5CNFSM4HL735C2YY3PNVWWK3TUL52BUZWH48H48VRE64WH64WH64WH64WH64WH64WH8H646WH8W56WH8WH8H64WH8WH8H646WReq.W56WH8WHC8H48H8WReq.
"url": " https://github.com/microsoft/terminal/issues/653?email_source=notifications\u0026email_token = AB2TW7D3V347CBC62MCQ32TQT4QHVA5CNFSM4HL735C2YY3PNVWWWK3TUL52WZ63H48VORSUH8HV4HWH48HWH8HVRH64WH8HVRH64WHC8WRe8HVH48HVH64WHC8WHC8H48HVH48H6WHC8WHC8H6WHC8H8HVHRVH64WH6WH48H8WHCOMPH8HQWH8HReq.
"name": "Ver problema"
},
"descrição": "Ver este problema no GitHub",
"editor": {
"@type": "Organização",
"nome": "GitHub",
"url": " https://github.com "
}
}
]

Uma tecla de atalho estilo console Quake (ConEmu) é uma obrigação. Alguém conseguiu conectar o Terminal ao ConEmu?

@dotjosh Isso parece ótimo! Existe algum motivo pelo qual você implementou isso como uma ferramenta autônoma e não um PR? Quanto esforço seria para fundi-lo?

Sou forte em C # / WPF e consegui fazer isso rapidamente. Eu estaria disposto a ajudar a portá-lo se estivermos satisfeitos com o comportamento.

Nós estamos! Podemos ter um pull-request?

Quero dizer que amei o que você está fazendo com o novo Terminal. E eu entendo totalmente não ser capaz de obter uma solicitação de recurso devido a outros tickets priorizados. Isso acontece com todas as equipes, minha equipe também não está imune a isso.

Mas eu tenho que dizer que a falta desse recurso é a falha do PM e meio que mostra que eles não entendem totalmente o impacto desse recurso em tantos usuários. Isso é o quê, um ponteiro de 2? talvez 3?

Este é um recurso de fácil alcance que tem um grande impacto. Eu gosto que vocês aceitem PRs públicos, mas se o público não está fazendo isso, puxe isso para uma corrida. Este ingresso está aberto há um ano.

Para algumas pessoas não é nada importante, para outras é um problema, embora eu pudesse viver sem ele graças a algumas soluções alternativas postadas aqui, então, pessoalmente, priorizaria coisas que não podem ser suplementadas de nenhuma forma como # 574 (ou provavelmente muitos outros, esse é apenas o meu segundo problema)

Direito. Você está falando sobre como não conseguimos priorizar isso de forma adequada e eu entendo que esse recurso seja importante para você. No entanto, gostaria de perguntar: com os quatro engenheiros da equipe principal, quais dos recursos concluídos nas etapas a seguir (consulta com escopo, mais recursos soltos) deveríamos cortar para abrir espaço para o gerenciamento de janela personalizada?

  • _ Recursos marcados como corrigido e fechado _
  • acessibilidade
  • abas na barra de título
  • painéis
  • validação de configurações
  • detecção de perfil
  • semântica de saída racionalizada
  • renderização adequada para ideogramas CJK
  • suporte de entrada para usuários de teclado não US-ANSI
  • redimensionamento que não apaga seu histórico
  • pesquisa
  • (eu poderia continuar listando recursos aqui)

Posso comprometer a engenharia com um, talvez dois recursos por desenvolvedor por mês. Já se passaram 10 meses e, na maior parte desse tempo, tivemos uma equipe de 2 a 3 em vez de 4.

Se você puder identificar quais dessas coisas que decidimos eram apostas de mesa sem as quais deveríamos ter enviado, ficarei feliz em ter essa discussão com você.

Não estou dizendo que esses recursos não sejam importantes. Meu ponto é, este é um fruto mais fácil com quase 300 polegares para cima, vários tickets duplicados criados sobre ele e não está tão envolvido quanto a maioria dos outros recursos / correções de bugs que você listou.

Não quero menosprezar o trabalho que está sendo feito aqui, pelo contrário acho incrível o que a equipe tem feito. Tanto a equipe quanto você merecem crédito.

Talvez eu tenha sido um pouco duro, então peço desculpas por isso. Mas ainda acho que meu ponto é válido. É você e a equipe que decidem, é claro, apenas meus dois centavos.

Se esta é uma fruta acessível, então ficaria feliz em revisar um PR de um membro da comunidade para abordar esse recurso 😉. Como está atualmente, a equipe de desenvolvimento está em um sprint de congelamento de recursos e correção de bugs / polimento pelos próximos meses. Certamente examinaremos nosso backlog para ver se há tarefas a serem iniciadas quando o 1.0 chegar, e quero deixar claro que a equipe entende que essa é uma pergunta popular.

fixá-lo na barra de tarefas e usar o Win + 1 para acessá-lo é uma solução alternativa (embora agora eu esteja usando o script autohotkey kimbirkelund de https://github.com/microsoft/terminal/issues/653#issuecomment-541408854). Não acho que isso deva ser uma prioridade.

Talvez alguém possa compilar o script do kimbirkelund ou wizcas e fornecer um binário para aqueles que não querem instalar o autohotkey?

existem soluções alternativas muito melhores do que mantê-lo na barra de tarefas, o que é exatamente o que queremos evitar, mas, como você disse, existem algumas, embora seja importante, está mais abaixo na lista de prioridades do que coisas que não podem ser complementadas com ferramentas externas

Adicionando meus dois centavos à discussão, minha versão modificada do script AutoHotKey fornecido por @kimbirkelund :

  • A tecla de atalho é Ctrl + ~
  • O terminal está configurado para permanecer no topo
  • Uma coisa que achei que poderia ser útil foi isto: se você está com o terminal aberto e abre uma janela enquanto o terminal está sendo exibido, se você ocultar o terminal, ele não sabe sobre esta "nova janela" e volta para o velho ativo. Estou usando há algumas horas e parece estar funcionando

ATUALIZAÇÃO: Eu atualizei meu script para que se você alternar para outra janela (alt + tab) por exemplo, ele irá alternar para aquela janela quando você ocultar o terminal


Este é o script, espero que seja útil para outras pessoas 🙂:

#Persistent
SetBatchLines, -1
Process, Priority,, High

Gui +LastFound
hWnd := WinExist()

; Subscribe to win-create events to get the activated window
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage(MsgNum, Func("OnWin"))
Return

OnWin(event, hwnd)
{
  ; WinGetClass, winClass, ahk_id %lParam%
  WinGetClass, winClass, ahk_id %hwnd%
  if (winClass = "CASCADIA_HOSTING_WINDOW_CLASS")
  {
    global activatedWindow
    activatedWindow = -1
  }
  else
  {
    ; 1 is HSHELL_WINDOOWCREATED
    ; 4 is HSHELL_WINDOWACTIVATED
    if (event == 1 || event & 4)
    {
      global activatedWindow
      activatedWindow = -1
      activatedWindow = %hwnd%
    }
  }
}

; Toggle windows terminal using Ctrl,`
^`::ToggleTerminal()

ShowAndPositionTerminal()
{
  WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
  WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

  WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, -5, -10, A_ScreenWidth + 10, A_ScreenHeight * 0.7,
  Winset, AlwaysOnTop, On, A
}

ToggleTerminal()
{
  global activatedWindow
  WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

  DetectHiddenWindows, On

  if WinExist(WinMatcher)
  {
    DetectHiddenWindows, Off

    if WinExist(WinMatcher)
    {
      ; Script sees it without detecting hidden windows, so..
      WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
      if activatedWindow > 0
      {
        WinActivate, ahk_id, %activatedWindow%
        activatedWindow = -1
      }
      else
      {
        Send !{Esc}
      }
    }
    ; Check if its hidden
    else if !WinExist(WinMatcher) || !WinActive(WinMatcher)
    {
      ShowAndPositionTerminal()
    }
  }
  else
  {
    Run "%SCOOP%\apps\windows-terminal\current\WindowsTerminal.exe"
    Sleep, 1000
    ShowAndPositionTerminal()
  }
}

@ zadjii-msft isso significa que um PR não será mesclado por alguns / alguns meses?
Esta foi a primeira coisa que pesquisei no Google quando instalei o terminal - o que também agradeço muito por criar um terminal real. Super entusiasmado

@ chazt3n Estamos muito

Eu realmente não posso dar nenhuma estimativa de quando qualquer uma dessas datas está neste ponto, principalmente apenas "quando estiver pronto"

Desculpe se isso já foi abordado acima, pois não li o tópico completo em detalhes. De uma perspectiva de comportamento; Acho que seria melhor se pudéssemos escolher entre o 'modo quake' ou apenas as janelas / guias existentes em primeiro plano na tecla de atalho.

Atualmente, uso outra plataforma de console que simplesmente me dá uma caixa de seleção nas configurações para 'primeiro plano o aplicativo com Ctrl + ~', mas, de outra forma, ela respeita totalmente o tamanho e o estado da minha janela existente.

Esse recurso é muito, muito muito bom de ter, já que muitas vezes temos tantas janelas e a janela do terminal (visto que quase sempre não é a tela inteira) pode se perder em segundo plano.

A parte mais importante é que não temos apenas a janela dimensionada para a largura total, mas mantendo sua barra de título. A barra de título também deve estar invisível.

Desculpe se isso já foi abordado acima, pois não li o tópico completo em detalhes. De uma perspectiva de comportamento; Acho que seria melhor se pudéssemos escolher entre o 'modo quake' ou apenas as janelas / guias existentes em primeiro plano na tecla de atalho.

Ele se perdeu nos itens ocultos do thread, mas @flyingpie compartilhou um programa C # para adicionar o recurso de estilo quake. Você pode encontrá-lo aqui e, se olhar para Toggler.cs nas linhas 51 e 72, deverá ser capaz de modificar seu comportamento para que apenas traga a janela para o primeiro plano, sem modificar seu tamanho. Eu não tentei embora.

Mudei para a abordagem ahk depois de um tempo, uma das principais razões é que eu não tenho que usar o VS para construí-lo, mas depois de mexer um pouco eu obtive resultados realmente bons, a base para isso está em algum lugar neste tópico também

note que eu o uso para o Messenger, pois o WT sente falta de mais algumas coisas para mim

_Uma solução alternativa até que haja um modo dropdown nativo para Terminal. 😃_

Depois de algumas semanas de uso, posso recomendar https://eugeny.github.io/terminus/

Belo terminal com também conhecido como "modo quake" (Configurações> "Encaixar o terminal" definido como Top e "Teclas de atalho"> "Alternar janela do terminal" para Ctrl-` ).

Ele é construído no Electron, então não é "leve", mas funciona bem com WSL2.

Gostei de configurá-lo para a primeira parte da minha barra de tarefas e usar o WIN + 1 para abri-lo.

Meu único problema é que nem sempre consigo abri-lo no admin, o que equivale a WSL sendo inutilmente manipulado. Então, clique com o botão direito, clique com o botão direito, abra como admin - WIN + 1 a partir de então.

@ chazt3n Se você deseja abrir no admin usando o teclado, seria:
WIN + ALT + 1 para abrir o menu do botão direito desse item da barra de tarefas.
Tecla Menu (ao lado da tecla CTRL direita) ou SHIFT + F10
Escolha "abrir como administrador" com as setas e digite.

@ chazt3n @SamHasler não precisa fazer da maneira mais difícil.
Se você segurar a tecla Shift ao abrir um aplicativo, terá uma segunda cópia.
Se você segurar Shift e Ctrl ao abrir um aplicativo, ele será aberto elevado.
_Isso é verdade tanto no menu iniciar, na caixa de diálogo de execução ou na barra de tarefas, e se você abre com o teclado ou clicando em ..._

Em outras palavras, amasse todo o canto do teclado antes de pressionar 1: Ctrl + Shift + Win + 1 abrirá uma nova cópia elevada.

@Jaykul Quando conto às pessoas sobre o modificador mágico do elevador, elas sempre dizem "whattttt"

Na verdade, estou trabalhando em um projeto como este e adoraria colaborar com qualquer pessoa interessada em ajudar. Devo ter uma versão alfa no final do fim de semana que suporte CMD, powershell e WSL com funcionalidade de estilo suspenso.

Estou interessado em expandir o guake / yakuake e o que eles fizeram, no entanto, com algumas ideias adicionais, como NOFUNEVER descreveu a capacidade de usar vários monitores ao mesmo tempo, mas não tenho certeza de como seria.

Isso ainda NÃO está pronto para teste, mas devo ter um alfa pronto para teste até o final do fim de semana, se alguém estiver interessado em colaborar, por favor me mande um email para mwayne. [email protected]. Alguém que é bom em aplicar temas e trabalhar com controles em C # seria de grande ajuda.

https://github.com/usrcletus/winuake

Por favor, seja fácil comigo, está em estágios super difíceis lol.

Adoraria ver essa funcionalidade funcionando. Extremamente satisfeito com a forma como o Windows Terminal funciona (é um dos poucos aplicativos de terminal do Windows que não engasga e morre no teste de velocidade "cmatrix"!). Inclua-o (quando puder :)), uma vez que você esteja acostumado com essa funcionalidade, não poderá viver sem ela.

Este recurso economiza muito tempo.
Estou ansioso para o Windows Terminal 2.0

Muitos recursos assistidos, realmente tornariam a troca de ambiente entre Linux e Windows muito mais agradável.

Muitos recursos assistidos, realmente tornariam a troca de ambiente entre Linux e Windows muito mais agradável.

que exigiria que alguns dos emuladores de terminal Linux tivessem todos os recursos do conemu, o Windows já tem tudo

A equipe lançou um roteiro e este problema está lá 🥳 Embora tenha prioridade 3 em uma escala de 0 a 2 😢

Desculpe, nossa escala realmente vai para 3. Ops! :sorriso:

No entanto, parece que esses problemas podem não chegar nem ao lançamento em 1 ano. Que pena. Eu estava muito interessado em usar o novo terminal, mas sem o recurso de tecla de atalho é muito complicado em comparação com o guake no Linux.

Feliz, pelo menos entrou na lista. :) - WSL2 Docker tornou o Windows um driver diário mais factível, este recurso irá apenas empurrá-lo ainda mais quando chegar.

Concordo que esse é um recurso útil e eu realmente precisaria dele se usar o Windows.
No entanto, todas as funcionalidades mencionadas devem ser gerenciadas pelo gerenciador de janelas, ao invés de um terminal.

Tecnicamente, isso seria ótimo se o WM permitisse, você seria capaz de lidar com todas as janelas com facilidade, mas é improvável que consigamos isso logo. A melhor aposta seria adicionar isso aos PowerToys

Não necessariamente. Significa apenas que a equipe da Microsoft não trabalhará nisso.
Qualquer pessoa pode enviar o recurso como RP.

Se alguém quiser uma solução AutoHotkey muito simples, consulte a essência: https://gist.github.com/atruskie/99a498ac43b91deb91eab4069b6047b9

Não é a solução exata, mas faz o trabalho sem muito esforço.

#NoEnv
#SingleInstance force
SendMode Input
DetectHiddenWindows, on
SetWinDelay, 0

#`::
    terminal := WinExist("ahk_exe WindowsTerminal.exe")
    if (terminal) 
    {
        active := WinActive("ahk_id " terminal)
        if (active)
            WinMinimize, ahk_id %active%
        else
            WinActivate, ahk_id %terminal%
    }
    else
        Run, wt.exe
Return

@ Defcon0 Acabei de colocá-lo como a primeira entrada na minha barra de tarefas e usar WIN + 1, honestamente é um pouco mais conveniente para mim, pois posso colocá-lo em qualquer lugar da tela.

@Jaykul forneceu uma etapa de abertura no administrador também

Se alguém quiser uma solução AutoHotkey muito simples, consulte a essência: https://gist.github.com/atruskie/99a498ac43b91deb91eab4069b6047b9

Não é a solução exata, mas faz o trabalho sem muito esforço.

#NoEnv
#SingleInstance force
SendMode Input
DetectHiddenWindows, on
SetWinDelay, 0

#`::
    terminal := WinExist("ahk_exe WindowsTerminal.exe")
    if (terminal) 
    {
        active := WinActive("ahk_id " terminal)
        if (active)
            WinMinimize, ahk_id %active%
        else
            WinActivate, ahk_id %terminal%
    }
    else
        Run, wt.exe
Return

Escrevi uma essência como esta há algum tempo: https://gist.github.com/sharunkumar/af7ba56e3cce8238ae9c986c619e8d1c

este volta para a janela ativa em que você estava, antes de mudar para WT

global PreviousActiveWindow

#`::
DetectHiddenWindows, On
if (WinExist("ahk_class CASCADIA_HOSTING_WINDOW_CLASS")) {
    if(WinActive("ahk_class CASCADIA_HOSTING_WINDOW_CLASS")) {
        WinActivate, ahk_id %PreviousActiveWindow%
    } else {
        WinGet, PreviousActiveWindow, , A ; 'A' for currently active window
        WinActivate, ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    }
} else {
    TerminalLink = %localappdata%\Microsoft\WindowsApps\wt.exe
    if FileExist(TerminalLink) {
        WinGet, PreviousActiveWindow, , A ; 'A' for currently active window
        Run, %TerminalLink%
    } else {
        MsgBox, Windows Terminal not installed
    }
}
Return

Eu encontrei este repositório para um aplicativo simples que adiciona terremoto ao terminal:
https://github.com/flyingpie/windows-terminal-quake

Funciona bem o suficiente para meus casos de uso.

Descobri que isso pode ser facilmente alcançado usando o Keyboard Manager PowerToy e o atalho Windows Key + NUM mencionado anteriormente para iniciar um aplicativo fixado na barra de tarefas. Basta fixar o Terminal do Windows na barra de tarefas (o meu está na posição 6) e, em seguida, abrir a ferramenta PowerToys Keyboard Manager. Eu usei WIN + ` com Cmder e então _remapped_ o atalho WIN + ` para WIN + 6 . Agora, sempre que eu fizer WIN + ` o Terminal do Windows virá para a frente ou iniciará uma nova instância se ainda não estiver em execução (o que é ainda melhor do que o Cmder faz nativamente).

image

não, não é a mesma coisa
minimizar! = ocultar janela
esconder janela faz com que saia completamente do seu caminho

Você está correto, este certamente não é o modo de terremoto - desculpe qualquer confusão. Descobri esse problema apenas procurando uma maneira de fazer com que um atalho global personalizado trouxesse o Terminal para o primeiro plano, o que foi um obstáculo para mim, já que estou acostumado com esse comportamento de Cmder. Pessoalmente, não senti necessidade do modo Quake, então esta solução de atalho preencheu a lacuna e pensei em passá-la adiante.

Este é o pedido de recurso mais votado e está aberto há mais de um ano ??

Como diabos isso ainda não foi implementado?

Ei, estou apenas postando algumas notas de pesquisa aqui, porque não quero perdê-las.

RegisterHotKey não pareceu fazer nada na minha experimentação. Talvez eu estivesse fazendo errado? Talvez a ilha XAML esteja comendo a mensagem WM_HOTKEY antes mesmo de chegar ao nosso wndproc? Não parece haver nenhum feedback sobre essa função, então não tenho certeza de como isso é útil em um "modo de várias instâncias".

SendMessage(_window.get(), WM_SETHOTKEY, VK_OEM_3, 0) realmente _did_ funcionou. Ele até retorna 2 se houver outra janela com essa tecla de atalho já configurada, o que é bom. Isso fará tudo por nós - quando a tecla for pressionada _ qualquer lugar_ no sistema, ele ativará a janela do Terminal, mesmo se estiver minimizada. Não tenho certeza sobre "minimizado na barra de tarefas", mas progresso é progresso.

Infelizmente, não é trivial ter uma segunda janela do terminal aguardando o fechamento da primeira janela e, em seguida, selecionar a tecla de atalho. Além disso, quem recebe a tecla de atalho se houver 3 janelas WT abertas? Portanto, agora, apenas a primeira janela teria a tecla de atalho atribuída a ela, e então todas as janelas subsequentes criadas _não_ teriam a tecla de atalho atribuída a elas, até que a primeira janela fosse fechada. Então, a _próxima janela WT criada_ obteria a tecla de atalho. Isso é certamente estranho.

O recarregamento das configurações provavelmente também resultaria em uma janela _random_ WT obtendo a tecla de atalho atribuída.

Há um monte de perguntas neste tópico, então vou tentar resumi-las, mas ainda não prescrevi uma solução holística.

  • Pressione uma tecla de atalho em qualquer lugar para ativar a janela única do Terminal onde quer que esteja (requer modo de instância única, bem como suporte de tecla de atalho global)
  • Pressione uma tecla de atalho em qualquer lugar para ativar a janela única do Terminal _no monitor atual_. Se não estava anteriormente naquele monitor, mova-o para lá. (requer modo de instância única, bem como suporte de tecla de atalho global)
  • Pressione uma tecla de atalho para ativar a janela do terminal "mais próximo". (Isso provavelmente exigirá algum IPC como o que # 5000 está trabalhando)
  • Minimize para a bandeja, pressione uma tecla de atalho para ativar a janela única do terminal / a janela do terminal mais próximo (# 5727)
  • O terminal não aparece na visualização alt + tab, pressione uma tecla de atalho para ativar a janela única do terminal / janela do terminal mais próximo (não tenho certeza se isso é diferente do anterior
  • quando o Terminal for convocado usando a tecla de atalho, faça com que ele "deslize para dentro" a partir do topo (não tenho certeza se isso é possível com o método SendMessage(WM_SETHOTKEY) acima.)

    • Da mesma forma, deslize para fora ao desativar?

Uau, tenho certeza que perdi alguns dos cenários cobertos nos 95 comentários neste tópico, mas isso já é uma confusão de configurações.


EDITAR 17-Ago-2020: Ah, é assim que PowerToys conecta o teclado para mensagens globais, vamos fazer isso.
https://github.com/microsoft/PowerToys/blob/49b56d9b52bdfedd6ad1404bd0b20e884d2b574b/src/modules/shortcut_guide/shortcut_guide.cpp#L150 -L173

Na minha humilde opinião, minimizar a bandeja soa como um recurso diferente.

Ter várias instâncias e ter instâncias diferentes convocadas em telas diferentes soa como algo para uma segunda iteração deste recurso.

Acho que seria melhor primeiro se concentrar em cenários mais simples, como uma única instância sendo chamada por meio de um slide-in em uma tecla de atalho e o slide-out na mesma tecla de atalho. Se houver várias instâncias, provavelmente deve haver uma regra que é convocada então

IMO, como o WT tem várias guias, o melhor cenário é uma instância e ser chamado onde o mouse está, se houver vários desktops ou monitores virtuais. Como Guake.

Olá @ zadjii-msft - também estive examinando algumas áreas semelhantes e gostaria de consolidar a pesquisa e compartilhar algumas idéias de implementação. Lendo os materiais, não pude ter certeza se estava faltando onde a equipe procurou maneiras de aproveitar os recursos UAP / UWP que podem ser relevantes, então espero que este não seja um terreno já percorrido!

Em primeiro lugar, o registro da tecla de atalho. Eu encontrei a pesquisa WM_HOTKEY que você fez complementar a esta rota de registro de tecla de atalho UWP descrita aqui . Esta é uma abordagem que você já considerou? Achei que poderia ser uma boa abordagem, uma vez que o menu de contexto do explorer "lançar o terminal do Windows aqui" já foi implementado, eliminando a necessidade de construir / testar o AppService / IPC (# 5000), pois poderíamos simplesmente estender e aprimorar o que já está lá .

Enquanto investigava isso, encontrei esta resposta SO possivelmente relevante, delineando uma abordagem que se conecta a Windows.UI.Core.CoreDispatcher.AcceleratorKeyActivated para receber notificações quando combinações de teclas especiais são pressionadas, por exemplo, CTRL+~ . Isso é algo que pode ser aplicável?

Falando em modelo de processo ...

Infelizmente, não é trivial ter uma segunda janela do terminal aguardando o fechamento da primeira janela e, em seguida, selecionar a tecla de atalho. Além disso, quem recebe a tecla de atalho se houver 3 janelas WT abertas? Portanto, agora, apenas a primeira janela teria a tecla de atalho atribuída a ela, e então todas as janelas subsequentes criadas _não_ teriam a tecla de atalho atribuída a elas, até que a primeira janela fosse fechada. Então, a _próxima janela WT criada_ obteria a tecla de atalho. Isso é certamente estranho.
O recarregamento das configurações provavelmente também resultaria em uma janela _random_ WT obtendo a tecla de atalho atribuída.

Há um traço comum com esses desafios que, uma vez retirados da equação, torna as coisas muito mais claras e simples. Esse segmento comum é a lógica e a complexidade envolvida no gerenciamento de instância wt - acho que muito do resto é consequência desse desafio principal. Como muitos desafios, este pode ser melhor resolvido dividindo-o em desafios menores. Aqui, acho que a introdução de um intermediário torna desnecessário para o WT saber qualquer coisa sobre gerenciamento de instância, muito menos como lidar com o registro e ligação de tecla de atalho global (por exemplo, o aplicativo não está em foco). Isso me atrai do ponto de vista do SRP, e me parece que o trabalho para fornecer o menu de contexto do explorador "iniciar o Terminal do Windows aqui" se alinha com isso conceitualmente, se não na realidade. O TriggerEvent das extensões de desktop UWP pode ser usado por serviços IPC para passar ações serializadas (comandos) para instâncias wt em execução ou analisado e passado como args de inicialização para novos processos wt

O processo de manipulação da tecla de atalho global seria um aplicativo da bandeja do sistema _e_ um processo de modo de instância única (provavelmente um aplicativo WinForms) que contém um componente NotifyIcon junto com o menu de contexto do ícone da bandeja do sistema e componentes do distribuidor. Isso tem um efeito colateral positivo de evitar a necessidade de adicionar muitas configurações novas e complicadas + lógica à base de código WT, uma vez que não precisamos saber nada sobre o chamado "modo quake": smile :

  • Pressione uma tecla de atalho em qualquer lugar para ativar a janela única do Terminal onde quer que esteja (requer modo de instância única, bem como suporte de tecla de atalho global)

O menu de contexto do aplicativo da bandeja do sistema pode ter um menu desdobrável que exibe uma lista de perfis wt que os usuários podem clicar para selecionar o perfil a ser usado quando chamado "no estilo do modo Quake". O padrão pode ser o primeiro perfil listado se não for especificado. Se houver planos / especificações para implementar a lógica interna para obter listas de perfis e seus detalhes, o design se beneficiará da capacidade de ser usado fora do processo wt.exe (como em, o aplicativo de notificação de ícone não deve ter que duplicar a funcionalidade para carregar a lista de perfis e, se possível). Como o aplicativo systray gerencia instâncias, o wt não precisa necessariamente implementar o modo de instância única. Os repositórios do PowerToys mostram os

Resumindo uma postagem já densa em informações:

Muitas das preocupações com marcadores desaparecem ou são bastante atenuadas com essa abordagem, se você pensar bem. Quando dou um passo para trás e olho para o todo, sinto que este recurso está mais perto de se tornar uma realidade do que pensávamos!

  • Pressione uma tecla de atalho em qualquer lugar para ativar a janela única do Terminal _no monitor atual_. Se não estava anteriormente naquele monitor, mova-o para lá. (requer modo de instância única, bem como suporte de tecla de atalho global)
  • Pressione uma tecla de atalho para ativar a janela do terminal "mais próximo". (Isso provavelmente exigirá algum IPC como o que # 5000 está trabalhando)
  • Minimize para a bandeja, pressione uma tecla de atalho para ativar a janela única do terminal / a janela do terminal mais próximo (# 5727)
  • O terminal não aparece na visualização alt + tab, pressione uma tecla de atalho para ativar a janela única do terminal / janela do terminal mais próximo (não tenho certeza se isso é diferente do anterior
  • quando o Terminal é chamado usando a tecla de atalho, faça com que ele "deslize para dentro" a partir do topo (não tenho certeza se isso é possível com o método SendMessage(WM_SETHOTKEY) acima.)

    • Da mesma forma, deslize para fora ao desativar?

Recursos para NotifyIcon, WinForms e WPF:
http://www.abhisheksur.com/2012/08/notifyicon-with-wpf-applications.html
https://www.codeproject.com/articles/36788/wpf-xaml-notifyicon-and-taskbar-system-tray-popup
https://mcguirev10.com/2019/01/27/system-tray-icons-wpf-net-core-preview.html

HTH!

EDITAR:
Ao ler as especificações do modelo de processo de rascunho, parece que você também identificou a abordagem de processo separada . Suponho que a parte do "monarca" poderia em parte ou talvez (?) Em sua totalidade desempenhada pelo IPC / appservice

Fiz um utilitário rápido e sujo que registra o atalho global para alternar a última janela do Terminal do Windows. Acho que seria uma boa solução antes da implementação oficial.

https://github.com/Inndy/TerminalSummoner

Modifiquei uma solução autohotkey de https://github.com/ehpc/quake-windows-bash para uma experiência um pouco melhor do usuário. Não pesquisei a solução do

Meu script está localizado aqui: https://github.com/rengler33/dotfiles/blob/master/C/Users/Rub/wt-quake-like.ahk

Usando a tecla de atalho Ctrl + `

  1. Se o terminal do Windows não for lançado, ele o inicia *
  2. Se for iniciado, mas minimizado, é restaurado
  3. Se estiver ativo, é minimizado
  4. Caso contrário (o que significa que está restaurado, mas fora de foco), coloque-o em foco

* Observação: este script também usa um atalho do Windows que gosto de usar, que adiciona algumas opções ao abrir
https://github.com/rengler33/dotfiles/blob/master/C/Users/Rub/wt.exe.lnk
Mas poderia ser substituído para simplesmente lançar BashHandle em vez de Shortcut

Modifiquei uma solução autohotkey em https://github.com/ehpc/quake-windows-bash

Obrigado por isso.

Eu me inspirei no script de @ rengler33 e fiz algumas modificações para minha própria configuração de 3 telas:
https://gist.github.com/oryon-dominik/562970f77f2ad4d9bd57bea58ddc8ef5
O script gera um Terminal Windows na tela ativa. (CTRL + CIRCUMFLEX)
Más animações e um pouco de oscilação, então é mais uma solução alternativa.

Estou realmente ansioso para implementar oficialmente esse recurso.

Eu também queria mudar do ConEmu para o Windows Terminal, mas também sentia falta do Quake Style. Se alguém estiver interessado - criei um pequeno aplicativo, que armazena e puxa a janela do terminal do Windows (você pode adicionar outros aplicativos para ter este estilo Quake, se quiser).

Verifique meu repo e todos os recursos aqui: https://github.com/rzym-on/termial-tray

Eu realmente espero que esse recurso venha por padrão em algum momento. Por enquanto, fique à vontade para usar minha pequena solução.

Eu também queria mudar do ConEmu para o Windows Terminal, mas também sentia falta do Quake Style. Se alguém estiver interessado - criei um pequeno aplicativo, que armazena e puxa a janela do terminal do Windows (você pode adicionar outros aplicativos para ter este estilo Quake, se quiser).

Verifique meu repo e todos os recursos aqui: https://github.com/rzym-on/termial-tray

Eu realmente espero que esse recurso venha por padrão em algum momento. Por enquanto, fique à vontade para usar minha pequena solução.

Obrigado por isso. Existe uma maneira de ajustar a velocidade de animação da janela do Windows Terminal que aparece .. da mesma forma que o ConEmu?

@mkanet, eu gostaria de redirecionar a discussão sobre o projeto de outra pessoa para o repositório e manter este tópico focado no problema em questão. Obrigado!

Outra ideia poderia ser um parâmetro para o comando wt.exe como: -T, --toggle
Se a instância do terminal não existe, abra um novo
Else (se ativo minimizar Else restaurar / ativar)

É como a lógica AutoHotKey acima, mas está dentro de wt.exe e acessível para atalhos .lnk / mapeamentos de teclas globais / barra de tarefas do Windows Win + Número etc

Seria ótimo se você não precisasse de outro aplicativo de terceiros para isso. E também sou viciado em Ctrl + `

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