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, dessa vez, os usuários do Windows não ficarão de fora, pois o Starship é multiplataforma, e funciona no PowerShell e no Zsh!

Fontes

Para que o Starship funcione corretamente, é necessário instalar uma fonte que suporte ícones no terminal. Existe um padrão de fontes chamado Nerd Fonts que é muito utilizado para esse fim.

Acesse o site nerdfonts.com e escolha a que mais lhe agradar.

Neste exemplo, vamos instalar a fonte Fira Code. Encontre-a na lista de fontes e clique no botão Download.

Parte da página de downloads do site Nerd Fonts, em que se mostra a opção pela fonte FiraCode.
Opção de download da fonte FiraCode no site Nerd Fonts.

Instalando as fontes

O pacote Zip contém vários arquivos, que definem variações da fonte. Extraia o conteúdo do pacote em uma pasta de sua escolha.

As variantes que nos interessam são as terminadas em Mono.

Explorador de arquivos do Windows aberto na pasta de downloads da fonte, com os arquivos iniciados em "FiraCodeNerdFontMono" selecionados.
Fontes Mono selecionadas no explorador de arquivos.

Windows

No Windows, selecione-as e pressione o botão direito do mouse. Então, clique em Abrir.

Diversas janelas sobrepostas do instalador de fontes do Windows, cada uma para um dos arquivos abertos.
Janelas do instalador de fontes abertas.

Isso abrirá uma janela do instalador para cada fonte. Não tem jeito, tem que clicar em Instalar em cada uma delas.

Linux

No Linux, isso é mais fácil. Após extrair o pacote, basta copiar os arquivos das variações para a pasta ~/.local/share/fonts.

Se quiser fazer pelo terminal, abra-o na pasta em que estão os arquivos descompactados e execute o comando:

Terminal window
cp *.ttf ~/.local/share/fonts

Você também pode copiar e colar graficamente pelo gerenciador de arquivos.

Definindo a fonte no terminal

Além de instalar a fonte, é necessário configurar o terminal para usá-la.

Já acessamos as configurações de fonte do GNOME Terminal e do Windows Terminal anteriormente.

Windows

Pelo Windows Terminal, acesse Configurações > Perfis > Perfil padrão > Aparência.

Janela de configurações do Windows Terminal aberta na aba de aparência do perfil padrão. Na opção de fonte, busca-se pela FiraCode Nerd Font Mono.
>Definindo a fonte FiraCode Mono no Windows Terminal.

Linux

Pelo GNOME Terminal, o passo a passo é :

Instalando o Starship

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.

PowerShell

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:

Terminal window
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:

Terminal window
code $PROFILE
Terminal com o PowerShell, em que se executa o comando para abrir o arquivo de configuração do PowerShell no Visual Studio Code.
Abrindo o arquivo de configuração do PowerShell com o Visual Studio Code.

Adicione as seguintes linhas ao arquivo:

Terminal window
# 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.

Possivelmente, você 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:

Terminal window
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Terminal com o PowerShell, em que se executa o comando para definir a política de execução de scripts.
Definindo a política de execução de scripts no PowerShell.

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

Feche e abra o terminal novamente. Para verificar se o Starship foi instalado corretamente, execute o comando starship.

Terminal com o PowerShell, em que se verifica se o Starship foi instalado corretamente.
Verificando se o Starship foi instalado no PowerShell.

Zsh

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

Para instalar o Starship, execute o comando:

Terminal window
sudo curl -sS https://starship.rs/install.sh | sh
Terminal com o Zsh, em que se executa o comando de instalação do Starship.
Executando comando de instalação do Starship no Zsh.

Quando perguntado se deseja prosseguir com a instalação, pressione a tecla y. 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:

Terminal window
code ~/.zshrc

Adicione as seguintes linhas ao arquivo logo antes da seção de plugins:

Terminal window
## Theme
eval "$(starship init zsh)"
export STARSHIP_CONFIG="$HOME/.config/starship.toml"

O resultado final deve ser similar a este:

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

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

Para verificar se o Starship foi instalado corretamente, execute o comando starship.

Terminal com o Zsh, em que se verifica se o Starship foi instalado corretamente, exibindo o prompt do Starship.
Verificando se o Starship foi instalado no Zsh.

Configurando o Starship

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 Gruvbox Rainbow, 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 Ubuntu, Fedora ou WSL, execute o comando:

Terminal window
mkdir -p ~/.config && touch ~/.config/starship.toml

Já no Windows, execute os comandos:

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

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 Ubuntu, Fedora ou WSL, execute o comando:

Terminal window
starship preset gruvbox-rainbow -o $STARSHIP_CONFIG

Já no Windows, execute o comando:

Terminal window
starship.exe preset gruvbox-rainbow -o $ENV:STARSHIP_CONFIG
Terminal com o PowerShell, em que se executa o comando para definir o tema Gruvbox Rainbow no Starship. Imediatamente, o prompt é atualizado com o novo tema.
Definindo o tema Gruvbox Rainbow no PowerShell.

Considerações

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.

Caso você não goste de tantos detalhes nas linhas anteriores no Zsh, você pode escolher um tema mais simples.

Eu particularmente me incomodo com o prompt cheio de coisas, então vou trocar o tema para o Nerd Font Symbols. O processo é o mesmo, bastando trocar o nome do tema no comando de configuração.