DEV Community

Thor Rachaus
Thor Rachaus

Posted on • Edited 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

Heroku

Built for developers, by developers.

Whether you're building a simple prototype or a business-critical product, Heroku's fully-managed platform gives you the simplest path to delivering apps quickly — using the tools and languages you already love!

Learn More

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

DEV is better (more customized, reading settings like dark mode etc) when you're signed in!

Okay