DEV Community

Thor Rachaus
Thor Rachaus

Posted on • Updated on

[PT-BR] - Turbinando o Powershell no Windows 11 com Oh-My-Posh e Chocolatey

O intuito deste artigo é instruir o usuário a realizar a instalação e configuração do Powershell com Oh-My-Posh no Windows 10/11, tornando esse Shell poderoso e responsivo, facilitando a sua produtividade no dia a dia para desenvolvimento de software.

Após as alterações e extensões instaladas o resultado final será semelhante ao exemplo da imagem abaixo:

Image description

Analisando a imagem acima, podemos perceber alguns detalhes curiosos nesse Powershell, primeiro contando com o privilégios a nível de execução através do comando sudo, seguido do gerenciador de pacotes chocolatey, na sequencia os nomes dos programas e por fim o verificador para ignoramos confirmações manuais -y.

Fora os detalhes mencionado anteriormente, conseguimos facilmente dizer que esse Powershell **tá com cara de um terminal **ZSH **ou **Fish **e até mesmo dizer que se trata de um **KDE **com o tema do **Windows 11, mas isso meus caros colegas se trata de Windows.

Para que essa mágica aconteça, temos que instalar uma série de programas que rodarão no backend do nosso **Powershell **propiciando assim uma maior produtividade para o usuário.

Instalando o Powershell 7.3.2 — A versão estável mais recente (no momento desse artigo):

Antes de mais nada, o primeiro passo que devemos realizar é acessar o site da microsoft clicando no endereço abaixo:

Instalar o PowerShell no Windows

No momento de construção desse artigo a versão mais recente e estável disponível é o Powershell 7.3.2 que pode ser baixado no link acima, para plataformas x86 (processadores de 32 bits) e *x64 *(processadores de 64 bits).

Basta selecionar a opção que melhor atenda sua plataforma e realizar o download do pacote msi:

Image description

Para quem os mais puristas e gosta de usar o terminal, também é possível instala-lo através do gerenciador de pacotes nativo do Windows 11 chamado de Winget, para isso vamos iniciar o nosso **Powershell **como administrador e rodar o comando abaixo:

winget Install Microsoft.PowerShell

Importante: Caso tenha realizado a instalação pelo método padrão do Windows lembre-se de habilitar as atualizações via Windows Update.

Feito isso vamos instalar um gerenciador de pacotes competente **para **Windows **que é o **Chocolatey.

Instalando o Chocolatey, um gerenciador de pacotes poderoso e competente para o Windows

Quando decidi utilizar o Windows **em conjunto com o meu **Linux **via **Dual Boot para trabalhar com Programação **e **DevSecOps, senti falta de um gerenciador de **pacotes **que visasse facilitar o meu dia a dia, sem ter que ficar indo de site em site através dos programas especifico para baixa-lo manualmente e o pior manter vários pacotes **desatualizados **no meu sistema, seja por falta de tempo ou esquecimento de verificar pacote por pacote para saber quando atualizar.

É nítido os esforços da Microsoft **em desenvolver um gerenciador de pacote "a lá Linux" para o **Windows, onde no Windows 11 contamos com o Winget mas ele ainda está muito "prematuro" para garantir uma experiência satisfatória no dia a dia, diante esse impasse entra um projeto já antigo para Windows **chamado de **Chocolatey, que busca na sua essência trazer uma experiência "a lá Linux" para o Windows **sem a necessidade do usuário ter que acessar o **Google e buscar programa por programa de forma manual.

O Chocolatey **é um gerenciador de pacote assim como o **Apt (Debian e Ubuntu), Dnf e Yum (CentOS e Fedora), Pacman (Arch Linux e Manjaro) ou Zypper (Opensuse), que conta com uma infinidade de pacotes em seu repositório que facilitará muito a administração e manutenção do nosso Windows.

O Site do **Chocolatey **pode ser consultado no endereço abaixo:

Chocolatey Community Repository

Para instalar o Chocolatey **no seu **Windows **vamos executar dois comandos no **Powershell **recém instalado como **Administrador:

Observação: Ao clicar no menu iniciar e pesquisar por Powershell será exibido dois Powershell um que a versão desatualizada que vem na instalação do Windows 11 e o outro que foi o que instalamos no passo acima (atualizado). Vamos selecionar o **Powershell **abaixo conforme a imagem:

Image description

Selecionado o **Powershell **vamos executa-lo como administrador e executar os comandos a seguir:

Set-ExecutionPolicy AllSigned
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Com o **Chocolatey **instalado vamos reiniciar o **Windows **apenas para garantir que não ocorra nenhum erro na instalação dos pacotes.

Com o computador reiniciado, chegou a hora de por a "mão na massa" e instalar as extensões e programas necessários para turbinamos nosso Powershell.

Instalando o GOW, um programa para entender comandos Linux no Windows

Se você assim como eu sente a falta de comandos Linux **ao utilizar o **Powershell **como o **ls, cat, grep entre outros, saiba que tem um pacote que resolve os nossos problemas.

Existe um projeto comunitário chamado Gow **que trás alguns comandos populares **Unix-Like para o Windows **visando trazer uma melhor experiência para o usuário que assim como eu tem familiaridade com o **Terminal.

A página oficial do projeto pode ser acessada no **Github **a seguir:

Gow - The lightweight alternative to Cygwin

Podemos realizar a instalação do **Gow **de duas formas, a tradicional "a lá Windows" e através do gerenciador de pacote **Chocolatey **que instalamos anteriormente. No nosso caso vamos usar o **Chocolatey **para vermos o quão poderoso e facilitador é esse gerenciador.

O primeiro passo é abrir o **Powershell **mais recente como **administrador **e executar o comando a seguir:

choco install gow -y

Feito isso basta aguardar, pois o Chocolatey realizará o Download **e adicionará o programa ao **Path(Variáveis de ambiente do Windows).

Concluída a instalação, basta fechar e abrir novamente o seu Powershell que o Gow **já estará funcionando perfeitamente no **backend.

Instalando pacote de fontes MesloLGS, deixando nosso terminal mais agradável

Uma grande novidade que surgiu nas versões mais recente do Windows 10 nos últimos anos, foi a implementação do Windows Terminal que é um emulador completo de Terminais, onde com um simples clique podemos executar o Cmder, Cygwin, Cmd, Git, Powershell, WSL2 (farei um outro artigo sobre WSL2) ou outro **Terminal **a gosto do usuário.

Essa solução foi um "boom" para aqueles usuários que assim como eu, gostam de utilizar a sua workstation(computador), para as mais diversas atividades, no meu caso usar a internet, jogar, trabalhar com edição de imagens e vídeos e programar.

Apesar dos esforços promovidos pela Valve **e pela comunidade **Open-Source em trazer jogos para o Linux *terem avançado muito nos últimos anos com a adição do **Proton **e do **Lutris *é inegável que no quesito de jogos o Windows se sobressai, sem a necessidade de "hackear*" e "perder tempo" tentando fazer um jogo funcionar onde em alguns casos terá o desempenho "capado" devido a camada de compatibilidade do **Wine*, o que é inviável para quem utiliza o computador para **games **como eu.

Diante isso, procurei uma forma de juntar o útil ao agradável e o Windows Terminal me trouxe essa possibilidade, porém a estética original desse terminal não me agradava por ser muito "simplista" queria algo customizado como faço nos meus ambientes **Linux **e nisso vi que dava para melhorar mais.

Tem um pacote de fontes, que costumo utilizar quando estou usando o Linux **no **Emulador de Terminal Tilix que são as fontes MesloLGS **que dão um visual diferenciado para o meu **ZSH **com **Powerlevel10k.

Para isso eu baixo as fontes do repositório do **Powerlevel10k **que pode ser acessada abaixo:

Powerlevel10k

No Repositório do **Powerlevel **eu procuro baixar as fontes a seguir:

Image description

Com o **Download **realizado, basta acessamos a pasta onde as fontes foram salvas, clicar com o mouse direito e mandar instalar como administrador, conforme a imagem a seguir:

Image description

Após instalamos as fontes acima é hora de configurar o nosso Windows Terminal para utilizar esse pacote recém instalado. Para isso vamos abrir o Windows Terminal e vamos clicar no ícone de da e na sequência clicar em configurações:

Image description

Na nova tela, vamos selecionar padrões → aparência → tipo de fonte e vamos definir a fonte como **MesloLGS **NF e depois salvar como o exemplo a seguir:

Image description

Instalando pacotes Unix-Like via Chocolatey

Se você assim como eu é um assíduo usuário de Terminal, vai sentir a falta de alguns pacotes que fazem parte do dia a dia de um usuário Linux **como **Awk, Curl, Git, Nano, Neovim, Nmap e Vim, que não vem por padrão no Powershell.

O lado bom é que com o Chocolatey conseguimos reverter esse cenário facilmente, instalando os pacotes essenciais (para meu uso) no nosso Powershell **para isso vamos rodar o comando a seguir como **administrador:

choco install awk curl git nano neovim nmap vim -y

Feito isso nosso **Powershell **estará apto para executar os pacotes acima via linha de comando.

Instalando o Scoop e configurando-o nas variáveis de ambiente do Windows

Apesar do Chocolatey **ser um ótimo gestor de pacotes, o **Scoop **será capaz de nos proporcionar alguns pacotes extras que fornecerá uma experiência totalmente **Linux-Like no nosso Powershell, com o uso do **sudo **por exemplo.

Para realizar a instalação vamos executar o comando abaixo:

iwr -useb get.scoop.sh | iex

Concluída a instalação acima é hora de configuramos o Scoop **como uma variável de ambiente do **Windows para que possamos utiliza-lo via CLI.

Para isso vamos digitar variáveis de ambiente no menu iniciar conforme a imagem abaixo:

Image description

Depois vamos clicar em variáveis de ambiente:

Image description

Selecionando a opção acima, vamos nos deparar com dois blocos de opções, a primeira parte diz respeito a configurações do usuário, já a outra são configurações do sistema. No segundo bloco de opções vamos localizar a opção **Path **e vamos edita-la:

Image description

Agora no canto direito vamos clicar em **novo **e adicionar uma nova entrada conforme a imagem abaixo:

Image description

Agora no campo recém criado vamos colar o conteúdo a seguir:

~\scoop\shims

Feito isso basta clicar em em ok (salvar), fechar o nosso Powershell **e vamos usar o **Windows Terminal.

Vamos iniciar o Windows Terminal como usuário comum e instalar mais alguns pacotes essenciais para o nosso uso do Powershell incluindo o comando sudo que auxiliará muito os próximos passos.

Para isso vamos rodar o comando a seguir:

scoop install sudo jq gcc fzf

Feito isso já conseguimos usar o comando sudo **para controlar o nosso gestor de pacotes **Chocolatey.

Configurando e instalando o Oh-My-Posh

Se você já utilizou **Linux **deve saber que temos diversos **shells **para cada gosto pessoal que podemos utilizar, dentre os mais famosos temos o **bash **padrão na maioria das distribuições linux, **zsh **um shell customizado com temas e extensões voltadas a produtividade e o **fish **que é similar ao **zsh **com um painel via web para configurações.

O Oh-My-Posh podemos dizer que é o **Zsh **para o **Powershell **de uma forma simplista, ele vai tornar o nosso **Powershell **elegante, além de adicionar várias funcionalidades que auxiliarão e muito a nossa produtividade.

Para instalamos o Oh-My-Posh devemos executar os comandos abaixo no **Powershell **como administrador:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
sudo choco install oh-my-posh -y
Install-Module oh-my-posh -Scope CurrentUser

Vamos entender um pouco os comandos acima:

  • O primeiro comando é responsável por aplicar as políticas de assinatura remota para o usuário atual permitindo a execução de comandos remotos.
  • O segundo comando é responsável por instalar o Oh-My-Posh no **Windows **e adiciona-lo as variáveis de ambiente.
  • O terceiro comando é responsável por habilitar o Oh-My-Posh para o usuário atual (sua conta), semelhante ao comando chsh -s $(which zsh) do Linux.

Habilitando o Git no Powershell via Oh-My-Posh

Agora vamos habilitar a sintaxe de comandos do git **no nosso **Powershell para ser utilizado no Oh-My-Posh para isso vamos executar o comando a seguir:

Install-Module posh-git -Scope CurrentUser

Após executar o comando acima seremos capaz de executar os comandos Git (Init, Push, Pull Revert, Rebase, Cherry-pick).

PowershellGet um Wget para o Windows

Um comando frequentemente utilizado por usuários do Linux **é o **wget **que é responsável por realizar **Download **de pacotes, páginas e conteúdo via **CLI. Vamos instalar um wget **que funcionará perfeitamente no **Windows com o comando a seguir:

Install-Module -Name PowerShellGet -Force

PSReadline turbinando nossa linha de comando

Quem utiliza o Zsh **já deve estar familiarizado com algumas extensões que auxiliam na produtividade como o **zsh-autosuggestions zsh-completions e fast-syntax-highlighting. O PSReadline **é responsável não só por adicionar essas extensões, pois adiciona uma séries de beneficies como **cores **para os comandos (dissociando **cores dos comandos corretos e errados), experiência multilinhas, intellisense preditivo e ajudas para os comandos (help).

Vamos instala-lo executando o comando a seguir:

Install-Module -Name PSReadline -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck

Alternativa ao Exa para Powershell

Para quem gosta de customização estilo "Unix-Porn" já deve ter utilizado o Exa **que acaba por trazer ícones no terminal para dissociar arquivos e pastas. Para **Windows **temos uma alternativa que deixa o comando **ls tão agradável como **Exa **conforme a imagem abaixo:

Image description

Como podemos observar na imagem acima, o visual do nosso terminal ficou totalmente personalizado e agradável isso se dar ao pacote Terminal-Icons.

Vamos instalar executando o comando abaixo:

Install-Module -Name Terminal-Icons -Repository PSGallery

PSFzf uma poderosa ferramente de pesquisa no seu Powershell

O PSFzf é uma poderosíssima ferramenta de pesquisa para o Powershell, que permite busca em pesquisa dentro do terminal com a combinação da tecla ctrl + r.

Para instalamos vamos executar o comando a seguir:

Install-Module PSFzf -Scope CurrentUser

Z o famoso Change Directory(CD) para Powershell

Um comando simples porém muito útil presente nos **BSD **e **Linux **para alternamos entre diretórios é o **CD **apesar do **Powershell **reconhecer o comando **CD **nativamente, em alguns casos ele não responde conforme o esperado. Para isso vamos garantir que tudo funcione corretamente como o uso de um **Linux **nativo instalando o pacote abaixo:

Install-Module -Name Z -Force

Módulos Azure Cloud (etapa opcional)

Caso você trabalhe com soluções Azure Cloud ou esteja estudando a respeito, saiba que o Powershell permite a instalação do pacotes necessários via CLI.

Para isso basta executar os comandos a seguir:

Install-Module Az.Accounts -Scope CurrentUser
Install-Module Az.Tools.predictor -Scope CurrentUser

Instalando o Tema Pwsh10k, tema semelhante ao Powerlevel10k para Windows.

Um dos temas que gosto de sempre ter em meus terminais quando estou utilizando o Linux é o Powerlevel10k, que além de ser um tema elegante trás algumas informações que auxiliam em muito na navegação entre diretórios.

Procurando uma alternativa similar ao Powerlevel10k **para o **Powershell encontrei um projeto chamado Pwsh10k que é basicamente o Powerlevel10k **para **Powershell.

Podemos conferir o projeto clicando no link abaixo:

Pwsh10k - A powershell theme based off of Powerlevel10k

Para realizar a instalação de tema vamos executar os seguintes comandos:

curl https://raw.githubusercontent.com/Kudostoy0u/pwsh10k/master/pwsh10k.omp.json --output pwsh10k.omp.json
Copy-Item -Path pwsh10k.omp.json -Destination $HOME

Hora de criar um arquivo de perfil para o Powershell

Uma vez com todos os pacotes acima instalado é o momento de criamos um arquivo de perfil para chamar todas essas extensões sempre que inicializamos o nosso Powershell *semelhante a um arquivo *.bashrc ou .zshrc que temos no Linux.

Para isso vamos criar o arquivo manualmente executando o comando a seguir:

New-item -type file -force $profile

O comando acima é responsável por realizar a criação de um arquivo de configuração possuindo o seu perfil (usuário do Windows) passado para a variável $profile. Esse arquivo será responsável por toda e quaisquer alterações que queremos realizar para inicialização do nosso Powershell.

Agora vamos editar esse arquivo em branco **recém criado com o **notepad:

notepad $profile

Agora basta colar o conteúdo a seguir no Bloco de Notas:

`# Powershell default profile for Poweruser
Import-Module posh-git
Import-Module oh-my-posh

Optional Step For Azure DevOps

Import-Module Az.Tools.Predictor

Set-PoshPrompt -Theme ~/pwsh10k.omp.json

Autocomplete, keybinds and history

Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadlineOption -HistorySearchCursorMovesToEnd

Autosuggestions for PSReadline

Set-PSReadlineOption -ShowToolTips
Set-PSReadlineOption -PredictionSource History

Terminal-Icons

Import-Module Terminal-Icons

Fzf

Import-Module PSFzf
Set-PsFzfOption -PSReadLineChordProvider 'Ctrl+f' -PSReadLineChordReverseHistory 'Ctrl+r'

Alias (Optional)

Set-Alias vim nvim
Set-Alias g git
Set-Alias ll ls
Set-Alias grep findstr
Set-Alias tig 'C:\Program Files\Git\usr\bin\tig.exe'
Set-Alias less 'C:\Program Files\Git\usr\bin\less.exe'

Ultilities (Optional)

function which ($command) {
Get-Command -Name $command -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
}
clear`

Feito isso basta salvar esse arquivo com ctrl + s, fechar o Bloco de Notas, fechar o Powershell **e abrir o **Windows Terminal, para ver as alterações na prática.

Adicionando transparência no Windows Terminal

Ao abrir o seu Windows Terminal você notará que o fundo não estar transparente, vamos resolver essa questão.

Antes de editamos o arquivo de configuração do Windows Terminal vamos instalar o Visual Studio Code para facilitar a edição do arquivo json de configurações do Windows Terminal, para isso vamos executar o comando abaixo:

sudo choco install -y

Será exibida uma janela se deseja executar o programa, basta selecionamos sim.

Uma vez com o Visual Studio Code instalado, vamos abrir o arquivo de configuração do Windows Terminal, para isso vamos clicar no ícone e na opção configurações:

Image description

Nessa nova tela, vamos criar na última opção a sua esquerda, onde vamos localizar a opção abrir o arquivo Json conforme a imagem a seguir:

Image description

Ao clicar na opção acima o Windows **vai exibir uma caixa de dialogo para escolhemos o editor de arquivo da nossa preferência, agora basta escolher o **Visual Studio Code recém instalado.

Logo ao abrir o Visual Studio Code temos que dar permissão de edição no arquivo e para isso vamos clicar na opção que permitirá editar o arquivo:

Image description

Clicando em Gerenciar o Visual Studio Code exibirá uma nova página se desejamos confiar no diretório, basta selecionar a opção **confiar **conforme a imagem:

Image description

Após os passos acima seremos capaz de editar e salvar o arquivo settings.json, agora vamos localizar a seção **default **e colar o conteúdo a seguir:

"opacity": 75,
"useAcrylic": false

O seu arquivo deve ficar conforme a imagem a seguir:

Image description

Adicionando Temas no Windows Terminal (Bônus)

O Windows Terminal além de transparência, permite que o usuário customize os temas de cores conforme a sua preferência, onde ele pode configurar um tema totalmente customizado no arquivo settings.json ou utilizar um tema já configurado.

Caso você queira consultar os temas disponíveis, temos o site abaixo com alguns temas **que basta copiar e colar no seu arquivo **settings.json:

Windows Terminal Themes

Esse site é bastante útil pois temos uma seleção de Temas **disponíveis além de uma exibição de como ficará o seu terminal, um dos temas que gosto bastante de utilizar é o **Blue Matrix conforme a imagem abaixo:

Image description

Uma vez selecionado o tema **desejado, basta clicamos na opção **Get theme destacada em **azul **para copia-lo.

Com o tema copiado, vamos adicioná-lo no nosso arquivo de configuração na seção schemes, no final do arquivo conforme a imagem abaixo:

Antes de colar o tema é necessário adicionar uma virgula(,) logo após a chave(}) conforme o exemplo abaixo:

Image description

Agora vamos colar nosso tema na linha abaixo da Virgula(,):

Image description

Alterado o arquivo, vamos salvar com a combinação de teclas ctrl +s ou clicando em arquivo → salvar.

Pronto agora basta fechar e abrir novamente o Windows Terminal que ele estará configurado e teremos o visual a seguir:

Image description

Bônus - para quem gosta de vídeos segue o tutorial detalhado

Top comments (0)