Windows Terminal
O Windows Terminal é o terminal oficial da Microsoft, já integrado ao Windows 11, e traz uma experiência excelente para quem desenvolve software. Neste artigo, você vai customizar o Windows Terminal para deixá-lo ainda melhor, com recursos como a exibição da branch do Git e da versão do .NET direto no prompt.
Ao final, você terá um perfil próprio, um tema do Oh My Posh, uma fonte com ícones, um esquema de cores personalizado e ícones nas listagens de pastas. É a mesma configuração usada nas aulas do balta.io.
Antes de começar
Se você trabalha com desenvolvimento de software e usa Windows, a melhor opção é a versão mais recente, o Windows 11. Ele não só é mais rápido e seguro, como traz recursos melhorados para desenvolvimento, incluindo o Windows Terminal integrado.
Se você ainda está migrando, o guia de instalação do Windows 11 mostra os primeiros passos e os cuidados com o TPM 2.0.
Windows Terminal em versões anteriores
Embora este artigo não cubra versões anteriores do Windows, você pode instalar o Windows Terminal nelas a partir de duas fontes:
Segundo a documentação oficial, a instalação pelo GitHub não recebe atualizações automáticas. Por isso, a loja continua sendo o caminho mais prático para manter o terminal em dia.
Winget
As versões mais novas do Windows 11 já trazem um gerenciador de pacotes integrado, chamado Winget. Neste artigo, ele será usado para instalar os pacotes adicionais.
Se o seu sistema ainda não tiver o Winget, faça o download nas releases oficiais do projeto no GitHub. Para uma visão mais completa da ferramenta, confira o artigo sobre como configurar o Winget no ambiente de desenvolvimento.
Verificando a instalação
Para verificar a instalação do Winget, abra o Windows Terminal e execute o comando abaixo. Se tudo estiver certo, ele mostra o número da versão instalada.
winget --version
Políticas do PowerShell
Em alguns casos, durante a execução de comandos, aparece um erro com a mensagem "O arquivo XXXX não pode ser carregado porque a execução de scripts foi desabilitada neste sistema". Isso acontece porque a política de execução do PowerShell no seu sistema bloqueia scripts.
A política de execução é um recurso de segurança do PowerShell. Nos computadores com Windows, o padrão costuma impedir a execução de scripts, o que inclui o arquivo de perfil que vamos editar mais adiante.
Para resolver, feche todos os terminais abertos e abra o Windows Terminal em modo administrador. Para isso, clique com o botão direito sobre o ícone do terminal e escolha a opção Executar como administrador.
Então, na nova janela, já como administrador, execute o seguinte comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
A política RemoteSigned permite executar scripts criados localmente. Por outro lado, scripts baixados da internet continuam precisando de assinatura digital, o que mantém uma camada de proteção.
Feche novamente a janela e reabra o Windows Terminal ou o terminal que estiver usando. Desta vez, não precisa abrir como administrador, e o erro deve parar de acontecer.
PowerShell no Windows Terminal
Por padrão, o Windows Terminal vem integrado ao PowerShell, um shell bem mais poderoso que o antigo cmd. Além do PowerShell, o terminal traz perfis para o Prompt de Comando e para o Azure Cloud Shell.
O terminal trabalha com diferentes perfis. Por isso, é normal ver uma lista grande quando clicamos na seta para baixo ao lado de uma nova aba.
Se você instalar distribuições do WSL, o terminal cria perfis para elas automaticamente. Assim, PowerShell, Prompt de Comando e Linux convivem lado a lado em abas.
Perfil padrão no Windows Terminal
Na imagem anterior, existe um perfil chamado balta.io. É esse perfil, usado nas aulas, que vamos configurar agora.
Com o Windows Terminal aberto, pressione CTRL + , para abrir as configurações. Em seguida, clique em "Open JSON file" no canto inferior esquerdo da tela.
Isso abre o arquivo settings.json no Visual Studio Code ou no seu editor padrão de JSON. Se ainda não tem o editor preparado, veja o artigo sobre instalação e customização do Visual Studio Code.
Nesse arquivo, procure pelo nó profiles > list. Ele é um array com todos os perfis disponíveis no terminal.
Em seguida, crie um novo item adicionando o seguinte código à lista:
{
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"guid": "{61c54bbd-c2c6-5271-96e7-00000ba17a10}",
"hidden": false,
"icon": "https://balta.blob.core.windows.net/public/images/logos/icone-novo-dark-flat.png",
"name": "balta.io"
},
Na prática, cada propriedade tem uma função específica:
- commandline: define qual shell o perfil usa, neste caso o PowerShell;
- guid: identificador único do perfil;
- hidden: define se o perfil fica escondido ou visível no menu;
- icon: ícone exibido na aba e no menu;
- name: nome do perfil.
Por fim, defina esse perfil como padrão. Para isso, altere o valor da propriedade defaultProfile, que fica na raiz do arquivo, para o GUID do perfil que acabamos de criar.
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-00000ba17a10}",
Segundo a documentação, o defaultProfile aceita o GUID ou o nome do perfil. Ele define qual perfil abre com Ctrl + Shift + T ou ao clicar no botão de nova aba.
Feche todas as janelas abertas e abra uma nova. A partir de agora, o título e o ícone do perfil já aparecem modificados.
Oh My Posh no Windows Terminal
Quem dá vida ao terminal é o Oh My Posh, um motor de prompts disponível para Windows, macOS e Linux. Ele suporta diversas customizações, como cores por status do Git, ícones e segmentos com informações do ambiente.
Instalação do Oh My Posh
Abra o Windows Terminal e execute o comando abaixo para instalar o Oh My Posh pelo Winget:
winget install JanDeDobbeleer.OhMyPosh -s winget
De acordo com o tutorial da Microsoft, essa instalação traz o executável oh-my-posh.exe e os temas mais recentes. Depois, confirme a versão instalada com o comando oh-my-posh version.
De vez em quando, vale atualizar o Oh My Posh, e a própria ferramenta avisa quando há versão nova. Nesse caso, basta executar o comando abaixo:
winget upgrade JanDeDobbeleer.OhMyPosh -s winget
Instalação da Nerd Font
Prompts customizados usam glifos, ou seja, símbolos gráficos, para desenhar ícones e separadores. Se a fonte não tiver esses glifos, aparecem quadrados vazios no lugar dos ícones.
Por isso, é preciso instalar uma Nerd Font. Para instalar a fonte, rode o terminal em modo administrador, como vimos anteriormente neste artigo.
Em seguida, execute o comando abaixo para listar as fontes disponíveis para instalação:
oh-my-posh font install
Por fim, selecione a fonte Meslo e pressione Enter. Você pode testar outras opções, mas aqui seguiremos com a Meslo.
Configuração do perfil do PowerShell
Feche todos os terminais abertos e abra um novo, desta vez sem o modo administrador. Depois, execute o comando abaixo para abrir o perfil do PowerShell no Visual Studio Code:
code $PROFILE
Nesse momento, o editor abre o arquivo Microsoft.PowerShell_profile.ps1. Vale notar que esse arquivo não é o perfil do terminal, e sim um script que o PowerShell executa toda vez que inicia.
Se aparecer um erro de caminho, provavelmente o arquivo ainda não existe. Nesse caso, crie o perfil com o comando abaixo e tente abrir de novo:
New-Item -Type File -Path $PROFILE -Force
Tema
Existem vários temas para o Oh My Posh, mas aqui vamos utilizar o tema oficial do balta.io para o terminal 💜. Ele está disponível nos modos claro e escuro, e você pode visualizar os dois no repositório oficial.
Altere o conteúdo do arquivo Microsoft.PowerShell_profile.ps1, ou adicione a linha caso esteja criando o arquivo agora.
Modo claro
oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/balta-io/oh-my-posh/main/balta-light.omp.json' | Invoke-Expression
Modo escuro
oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/balta-io/oh-my-posh/main/balta-dark.omp.json' | Invoke-Expression
Salve o arquivo e feche todos os terminais abertos. Ao abrir de novo, você já verá as primeiras mudanças na tela.
Recursos do tema
O tema do balta.io exibe três informações principais no prompt:
- nome da pasta, com a pasta atual;
- branch, com a branch atual do projeto Git;
- versão do .NET, com a versão usada no projeto atual.
Na prática, isso evita digitar git branch ou dotnet --version a todo momento. Se você ainda está começando com versionamento, veja o guia de instalação e primeiros passos com Git e GitHub.
Cores do Windows Terminal
Com o Windows Terminal aberto, pressione novamente CTRL + , e clique em "Open JSON file" no canto inferior esquerdo. Dessa vez, a opção que buscamos fica no fim do arquivo e se chama schemes.
Ou seja, esses são os esquemas de cores do terminal. Segundo a documentação oficial, cada propriedade, exceto name, aceita uma cor em formato hexadecimal.
Adicione os dois esquemas abaixo para carregar o terminal com as cores do balta.io:
{
"background": "#131219",
"black": "#131219",
"blue": "#0060F1",
"brightBlack": "#FFFFFF",
"brightBlue": "#3B78FF",
"brightCyan": "#008DF1",
"brightGreen": "#11D15E",
"brightPurple": "#B4009E",
"brightRed": "#DD0031",
"brightWhite": "#F2F2F2",
"brightYellow": "#9494F7",
"cursorColor": "#11D15E",
"cyan": "#008DF1",
"foreground": "#9494F7",
"green": "#11D15E",
"name": "balta.io Dark",
"purple": "#8625D2",
"red": "#DD0031",
"selectionBackground": "#FF508F",
"white": "#848487",
"yellow": "#FCDB04"
},
{
"background": "#FFFFFF",
"black": "#131219",
"blue": "#0060F1",
"brightBlack": "#8625D2",
"brightBlue": "#3B78FF",
"brightCyan": "#008DF1",
"brightGreen": "#11D15E",
"brightPurple": "#B4009E",
"brightRed": "#DD0031",
"brightWhite": "#F2F2F2",
"brightYellow": "#131219",
"cursorColor": "#11D15E",
"cyan": "#008DF1",
"foreground": "#9494F7",
"green": "#11D15E",
"name": "balta.io Light",
"purple": "#8625D2",
"red": "#DD0031",
"selectionBackground": "#8625D2",
"white": "#848487",
"yellow": "#FCDB04"
}
Os nomes balta.io Dark e balta.io Light são os identificadores usados nos perfis. Por isso, eles precisam ser digitados exatamente iguais na próxima etapa.
Defaults
Para finalizar, volte ao topo do arquivo e procure pela seção profiles. Dentro dela, localize a opção defaults.
Essa opção define configurações comuns a todos os perfis. Assim, você aponta o esquema de cores criado uma única vez, sem repetir em cada perfil.
Também aproveite para definir a fonte e o tamanho. Além disso, vale configurar o diretório padrão em que o Windows Terminal deve iniciar.
"defaults": {
"colorScheme": "balta.io Dark",
"font": {
"face": "MesloLGM Nerd Font",
"size": 20.0
},
"startingDirectory": "C:\\dev"
},
Caso a pasta C:\dev ainda não exista, crie com o comando abaixo:
mkdir C:\dev
Nos cursos, essa pasta é sempre o padrão para os projetos. Ela é simples, curta e não tem espaços nem caracteres especiais no nome.
Se a fonte informada não existir, o terminal volta para a Consolas. Portanto, se os ícones não aparecerem, confira se o nome em face bate com a fonte instalada.
Trocando o tema
Você pode alternar entre os modos escuro e claro de acordo com sua preferência. Para isso, basta trocar o nome no colorScheme:
"colorScheme": "balta.io Dark",
"colorScheme": "balta.io Light",
A documentação também mostra que o colorScheme aceita um objeto com as chaves light e dark. Nesse caso, o terminal troca o esquema automaticamente conforme o tema do aplicativo.
Configurações adicionais do Windows Terminal
Uma boa prática é limpar a tela do terminal assim que ele inicia. Isso é feito com o comando Clear-Host no perfil do PowerShell.
Também é possível exibir uma mensagem de boas-vindas com o Write-Host. Dessa forma, cada nova aba abre limpa e com uma saudação personalizada.
Abra novamente o perfil atual no VS Code em modo de edição:
code $PROFILE
Em seguida, deixe o arquivo com as seguintes linhas:
Clear-Host
oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/balta-io/oh-my-posh/main/balta-light.omp.json' | Invoke-Expression
Módulos adicionais para o Windows Terminal
O PowerShell aceita módulos que estendem seus comandos. Um dos mais populares para quem usa o Windows Terminal é o Terminal-Icons.
Adicionando ícones às pastas
O módulo Terminal-Icons, publicado no repositório PSGallery, adiciona ícones às pastas e arquivos quando usamos o comando ls. O resultado fica bem interessante, e ele inclusive muda as cores conforme o tipo de arquivo.
Para instalar, abra o terminal em modo administrador e execute:
Install-Module -Name Terminal-Icons -Repository PSGallery
Com o módulo instalado, basta importá-lo no arquivo de perfil. Assim, o perfil completo fica desta forma:
Import-Module -Name Terminal-Icons
Clear-Host
oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/balta-io/oh-my-posh/main/balta-light.omp.json' | Invoke-Expression
Segundo o repositório do projeto, o módulo procura o ícone adequado pelo nome ou pela extensão do arquivo. Quando não encontra, ele usa um ícone genérico de arquivo ou pasta.
Reinicie todos os terminais abertos e pronto. Agora você tem um terminal configurado igual ao do balta.io 💜
Conclusão
Com poucos ajustes, o Windows Terminal deixa de ser apenas uma janela de comandos e vira uma ferramenta de produtividade. O perfil próprio, o Oh My Posh e a Nerd Font mostram pasta, branch e versão do .NET sem nenhum comando extra.
Além disso, o esquema de cores e o Terminal-Icons deixam a leitura mais rápida no dia a dia. Como tudo fica no settings.json e no perfil do PowerShell, você consegue versionar e levar essa configuração para outras máquinas.
Se quiser comparar com outras opções, vale conhecer também o Warp, um terminal alternativo para usuários do Windows. Mesmo assim, para a maioria dos cenários de desenvolvimento .NET, o Windows Terminal bem configurado já resolve muito bem.
FAQ
O Windows Terminal já vem instalado no Windows 11?
Sim. Ele vem integrado ao Windows 11 e, nas versões anteriores, pode ser instalado pela Microsoft Store ou pelo GitHub.
Qual a diferença entre o perfil do terminal e o perfil do PowerShell?
O perfil do terminal fica no settings.json e define shell, ícone e aparência. Já o perfil do PowerShell é um script que roda toda vez que o PowerShell inicia.
Por que aparecem quadrados no lugar dos ícones?
A fonte configurada não tem os glifos usados pelo tema. Instale uma Nerd Font, como a Meslo, e informe o nome dela em font.face.
Preciso de modo administrador para tudo?
Não. Ele só é necessário para alterar a política de execução, instalar fontes e instalar módulos do PowerShell.
O Oh My Posh funciona no WSL?
Sim. A Microsoft documenta a instalação para Linux, inclusive no WSL, usando o Homebrew.