Windows Terminal
14/06/2020
André Baltieri

O Windows Terminal finalmente chegou para trazer uma melhor experiência para nossa vida via CLI, algo que era algo distante para usuários Windows.

Enquanto o Mac e Linux possuem diversas customizações para seus terminais, o Windows parecia ter parado no tempo com aquela tela azul do Power Shell.

Embora houvessem alternativas como o Hyper.js e CMDER, é sempre bom ter algo oficial, suportado pela Microsoft, e convenhamos, qual a dificuldade em suportar temas e customizações?

Instalação

Caso ainda não possua o Windows Terminal instalado, você pode fazer seu Download em uma das fontes oficiais listadas abaixo.

Políticas do Power Shell

Em alguns casos, durante a execução de comandos NPM no Windows, você poderá receber um erro com a seguinte mensagem: "O arquivo XXXX não pode ser carregado porque a execução de scripts foi desabilitada neste sistema"

Isto ocorre pois as políticas de execução do Power Shell em seu sistema não estão habilitada. Para resolver este problema, feche todos os terminais abertos e abra um novo Power Shell em modo administrador (Clicar com botão direito do mouse sobre o ícone do Power Shell e acessar a opção Executar como Administrador).

Nesta nova janela que se abriu, como administrador, execute o seguinte comando:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Feche novamente a janela e reabra o Power Shell ou qualquer terminal que esteja utilizando. Desta vez não precisa ser como administrador. O erro deve parar de acontecer.

Posh-git e Oh-my-posh

Para esta customização vamos precisar de dois módulos adicionais, o Posh-git e Oh-my-posh, que podem ser instalados utilizando os comandos abaixo no Windows Terminal.

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

Enquanto o Posh-git vai nos dar várias informações sobre o repositório atual, como branch, commits entre outros, o Oh-my-posh vai tornar tudo mais bonito.

Alterando o perfil

Com os módulos instalados, vamos configurar o perfil do terminal para sempre carregar estes módulos durante sua inicialização.

Para este passo, precisaremos do Visual Studio Code instalado.

Execute o seguinte código para abrir seu perfil atual no VS Code em modo de edição.

code $PROFILE

Em seguida, adicione as seguintes linhas ao arquivo:

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt Paradox

O que fizemos foi carregar os dois módulos instalados e definir o tema padrão como Paradox. Você pode conferir a lista completa de temas aqui.

Fontes

O Oh-my-posh utiliza alguns ícones para exibir a branch atual do repositório, dentre outros, então precisamos instalar alguma fonte que dê suporte ao mesmo.

Particularmente, prefiro a Source Code Pro for Powerline, mas a nova fonte, lançada recentemente pela Microsoft, chamada Cascadia também é muito bonita. Aí vai do seu gosto.

Feita a instalação das fontes, abra um novo Windows Terminal (Caso não esteja aberto) e pressione CTRL+, para exibir as configurações do mesmo.

Então realize a alteração da configuração fontFace conforme mostrado abaixo:

Versão Source Code Pro
"fontFace": "Source Code Pro for Powerline",
Versão Cascadia Code
"fontFace":  "Cascadia Code PL"

Fontes adicionais do OhMyPosh

ATUALIZADO EM 15/01/2022 Para utilizar o OhMyPost você precisa instalar a fonte Caskadya Cove Nerd Font.

Configurações adicionais

Em adicional, eu gosto de sempre limpar a tela do terminal em seu início, e isto pode ser feito utilizando a linha Clear-Host como mostrado abaixo. Também podemos adicionar uma mensagem de boas vindas utilizando o Write-Host.

Para finalizar, podemos trocar o nome da variável que exibe o caminho atual, para ter algo mais curto, sem o nome do usuário/computador por exemplo. Isto é feito utilizando o $DefaultUser.

Execute novamente o código em um terminal para abrir seu perfil atual no VS Code em modo de edição.

code $PROFILE

Em seguida, acrescente as seguintes linhas ao arquivo:

Clear-Host
Write-Host "balta.io"
$DefaultUser = 'balta'

Power Level 10K

image

O Power Level 10K é um tema bem robusto, mas que exige algumas configurações extras. Particularmente tenho usado e recomendo.

Fontes

Baixe e instale as fontes Meslo for PowerLine, utilizadas no tema:

Instalação

O PW10K exige um arquivo chamado pwsh10k.omp.json na raiz da sua pasta raiz, a $HOME. Ele sugere o seguinte processo:

  • Abra um terminal e execute git clone https://github.com/Kudostoy0u/pwsh10k
  • Navegue para a pasta cd pwsh10k
  • Execute o PS1 para instalar o tema .\install.ps1

Aqui este modo não funciou, deu problema de permissão na execução do script PS1, então fiz o processo manual:

  • Abra um terminal e execute git clone https://github.com/Kudostoy0u/pwsh10k
  • Navegue para a pasta cd pwsh10k
  • Abra a pasta pelo Windows Explorer executando explorer.exe .
  • Copie o arquivo pwsh10k.omp.json
  • Volte ao terminal e navegue para cd $HOME
  • Abra a pasta pelo Windows Explorer executando explorer.exe .
  • Cole o arquivo pwsh10k.omp.json
  • Feche todos os terminais e abra novamente

Pronto, agora só precisamos alterar o tema para o PW10, executando code $PROFILE no Terminal e alterando o arquivo para o seguinte:

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme  ~/pwsh10k.omp.json

Módulos adicionais (2022)

image

ATUALIZADO EM 12/01/2022

Adicionando ícones as pastas

O módulo PSGallery adiciona ícones as pastas quando usamos o comando ls. Fica bem legal e ele muda a cor inclusive.

Install-Module -Name Terminal-Icons -Repository PSGallery

Com o módulo instalado, basta importar ele no arquivo do profile.

Import-Module -Name Terminal-Icons

Adicionando módulos

Um dos recursos incríveis do Oh My Posh é o uso módulos ou como eles chamam, Segments. Tem diversos segments, até para Spotify. Neste exemplo vamos usar o do Git, .NET e Azure, mas recomendo ver este link na sessão Segments para mais detalhes.

Para adicionar segmentos eu criei um arquivo chamado ohmyposh.json no $HOME do Windows (Vale para Mac ou Linux também) e depois referenciei ele no arquivo de perfil (code $PROFILE). Como o arquivo ficou grande, segue o GIST dele.

Import-Module oh-my-posh
Import-Module -Name Terminal-Icons
Clear-Host

oh-my-posh --init --shell pwsh --config ~/ohmyposh.json | Invoke-Expression

Reinicie os terminais abertos e pronto 💜

Fontes

Conheça o autor

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.

An unhandled error has occurred. Reload 🗙