Pular para o conteúdo

Temas

Uma das partes mais legais de customizar o shell é definir um tema para o prompt! Existem diversos frameworks para isso.

Neste capítulo, vamos tratar sobre o Starship, um prompt minimalista, rápido e extremamente customizável. E os usuários do Windows não ficarão de fora, pois o Starship é multiplataforma, e funciona no PowerShell e no Zsh!

Para instalar o Starship, vamos seguir as instruções do site oficial.

Tanto no Windows como no Linux (e WSL), parte do processo é editar o arquivo de configurações do shell. Vamos tratar sobre os detalhes de como fazer isso para o PowerShell e para o Zsh.

O Starship pode ser instalado no Windows através do PowerShell.

Para obter o instalador e executar o script de instalação, rode o seguinte comando.

PowerShell
winget install --id Starship.Starship
Terminal com o PowerShell, em que se executa o comando de instalação do Starship.
Instalando o Starship no PowerShell.

Após a instalação, é necessário adicionar o script de inicialização do Starship ao seu perfil do PowerShell.

O arquivo de configuração do PowerShell tem o nome Microsoft.PowerShell_profile.ps1. Seu local de armazenamento pode variar de acordo com a versão do PowerShell.

O arquivo para o PowerShell 5 é encontrado em $HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1. Já para o PowerShell 7, o arquivo é encontrado em $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.

Felizmente, o Windows provê uma variável de ambiente chamada $PROFILE que aponta justamente para esse arquivo. As instruções deste capítulo valem para qualquer uma das duas versões. Basta executar os comandos no terminal da versão que você utiliza.

Vamos abrir o arquivo de configuração com o VSCode, executando o comando abaixo.

PowerShell
code $PROFILE

Adicione as seguintes linhas ao arquivo.

$HOME/Documents/PowerShell/Microsoft.PowerShell_profile.ps1
## Shell configuration
### Theme
$ENV:STARSHIP_CONFIG = "$HOME\.config\starship.toml"
function Invoke-Starship-TransientFunction {
&starship module character
}
Invoke-Expression (&starship init powershell)
Enable-TransientPrompt
Arquivo de configuração do PowerShell aberto no Visual Studio Code, com as linhas de configuração do Starship adicionadas.
Arquivo de configuração do PowerShell com o comando para executar o Starship.

Salve o arquivo e feche o editor. Para que as alterações tenham efeito, feche e abra o terminal novamente.

Se estiver usando o PowerShell 5, você possivelmente verá uma mensagem de erro ao abrir o PowerShell.

Terminal com o PowerShell, em que se exibe uma mensagem de erro sobre a execução de scripts.
Mensagem de erro no PowerShell sobre execução de scripts.

Essa mensagem é exibida porque o Windows não permite a execução de scripts por padrão. Precisamos alterar a política de execução de scripts para que o Starship funcione.

Para isso, execute o comando abaixo.

PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Esse comando define que scripts que sejam assinados por fontes confiáveis podem ser executados.

Feche e abra o terminal novamente.

No Linux e no WSL, o Starship pode ser instalado no Zsh.

Para executarmos seu script de instalação, precisamos de um programa chamado curl.

Você pode instalá-lo da seguinte forma no Fedora ou WSL.

Fedora ou WSL
sudo dnf install curl -y

Ou como a seguir no Mint.

Mint
sudo apt install curl -y

Para instalar o Starship, execute o comando:

Fedora, WSL ou Mint
sudo curl -sS https://starship.rs/install.sh | sh

Quando perguntado se deseja prosseguir com a instalação, pressione a tecla y y e então a tecla Enter Enter .

Terminal com o Zsh, em que se executa o comando de instalação do Starship.
Executando comando de instalação do Starship no Zsh.

O instalador exibirá uma mensagem informando que o Starship foi instalado com sucesso, e que é necessário adicionar o script de inicialização ao arquivo de configurações do shell.

Terminal com o Zsh, em que se exibe a mensagem de sucesso da instalação do Starship.
Mensagem de sucesso da instalação do Starship no Zsh.

O arquivo de configurações do Zsh é o ~/.zshrc. Vamos editá-lo usando o VSCode com o seguinte comando abaixo.

Fedora, WSL ou Mint
code ~/.zshrc

Atualize o arquivo da seguinte forma.

~/.zshrc
## Path configuration
PATH=$PATH:~/.local/bin
## Shell configuration
ZSH_THEME="robbyrussell"
### Path to Oh My Zsh installation
export ZSH="$HOME/.oh-my-zsh"
### Source Oh my Zsh
source $ZSH/oh-my-zsh.sh
### Plugins
plugins=(
git
)
### Theme
eval "$(starship init zsh)"
export STARSHIP_CONFIG="$HOME/.config/starship.toml"

Salve o arquivo e feche o editor. Para que as alterações tenham efeito, feche e abra o terminal novamente.

O starship não é um tema, mas um framework para criar e definir temas. Ele é extremamente customizável, e você pode definir o prompt do jeito que quiser. Se quiser aprender mais sobre, acesse a documentação oficial.

Neste capítulo, vamos utilizar um dos temas já prontos, os quais são chamados de presets. Acesse o link e escolha o tema que mais lhe agrada. Vamos utilizar o tema Nerd Font Symbols, mas o passo a passo é similar para qualquer outro.

O Starship também tem um arquivo de configuração chamado starship.toml, que é onde você pode definir as configurações do prompt. Por padrão, este arquivo pode não existir.

Para criar um no Windows com o PowerShell, execute os comandos a seguir.

PowerShell
mkdir -Force $HOME\.config
New-Item -Path $HOME\.config\starship.toml -ItemType File

Já no Linux (incluindo o WSL), execute o comando abaixo.

Fedora, WSL ou Mint
mkdir -p ~/.config && touch ~/.config/starship.toml

Depois de criado, precisamos copiar o conteúdo de um preset para dentro desse arquivo. O starship oferece um comando para fazer justamente isso.

No Windows com o PowerShell, execute o comando a seguir.

PowerShell
starship.exe preset nerd-font-symbols -o $ENV:STARSHIP_CONFIG

Já no Linux (incluindo o WSL), execute o comando abaixo.

Fedora, WSL ou Mint
starship preset nerd-font-symbols -o $STARSHIP_CONFIG

O Starship é um framework novo e em constante desenvolvimento. Uma funcionalidade que foi implementada para o PowerShell, mas ainda não para o Zsh, é a de definir o prompt de forma transitória.

Isso significa que apenas a linha atual terá todos os detalhes do prompt, e as demais linhas terão um prompt mais simples.

Prompt do Starship no Zsh, com muitos detalhes em todas as linhas do histórico.Prompt do Starship no PowerShell, com menos detalhes, pois o prompt transitório foi ativado.
Comparação do Starship entre o Zsh e o PowerShell respectivamente.

Se você preferir desativar o prompt transitório no PowerShell, basta remover a última linha do arquivo de configurações.

$HOME/Documents/PowerShell/Microsoft.PowerShell_profile.ps1
## Shell configuration
### Theme
$ENV:STARSHIP_CONFIG = "$HOME\.config\starship.toml"
function Invoke-Starship-TransientFunction {
&starship module character
}
Invoke-Expression (&starship init powershell)
Enable-TransientPrompt