Introdução
Oh My Posh é uma ferramenta que não apenas aprimora a aparência do seu shell, mas também oferece integrações úteis que tornam o uso mais intuitivo e nos ajudam a ser mais produtivos.
Eu o uso no WSL e no meu servidor doméstico e o personalizei para identificar facilmente em qual shell estou:
Definição rápida
Apenas uma definição rápida dos termos Shell e Terminal:
- Shell: o software que recebe a entrada, processa e retorna uma saída (Exemplos: zsh, bash, PowerShell, cmd);
- Terminal: o software que recebe a entrada e a passa para o shell e, em seguida, imprime a saída do shell (Terminal do Windows, Terminal do VS Code, cmder).
Instalando o Oh My Posh
Para instalar o Oh My Posh, precisamos baixar o script de instalação e executá-lo:
curl -s https://ohmyposh.dev/install.sh | bash -s
E incluir sua configuração no arquivo de comandos de execução do shell que você usa.
No meu caso, eu uso zsh, então incluo a seguinte linha no meu arquivo ~/.zshrc
:
eval "$(oh-my-posh init zsh)"
Em seguida, saia do shell e entre novamente para carregar a configuração.
ℹ️ Aqui há uma lista de configurações para os shells suportados, incluindo PowerShell e Cmd.
Instalando uma Nerd Font
Para usar tudo o que o Oh My Posh oferece, é essencial instalar uma fonte personalizada que inclua ícones. Oh My Posh recomenda uma das Nerd Fonts.
Para instalar as fontes no Windows:
Baixe a fonte que você gosta (eu uso Caskaydia Cove) da página deles;
Extraia-o em um diretório temporário;
Selecione todos os arquivos .ttf;
Clique com o botão direito e clique em
Instalar
ouInstalar para todos os usuários
.
Configurando o Terminal
Em seguida, precisamos configurar o terminal para usar a fonte
⚠️ As fontes são necessárias no sistema onde você usa o terminal. Se você acessar um servidor via SSH, você só precisa das fontes no sistema de onde você o acessa.
Terminal do Windows
- Entre nas
Configurações
; - Selecione o perfil para configurar;
- Clique em
Aparência
; - Selecione a fonte em
Font face
- Clique em
Salvar
.
Então podemos ver que os ícones são mostrados corretamente:
VS Code
- Entre nas Configurações (
File
>Preferences
>Settings
); - Procure por
terminal font
; - Digite o nome da fonte em
Terminal > Integrated > Font Family
. Para Caskaydia Cove pode serCaskaydiaCove Nerd Font Mono
.
Então podemos ver que os ícones são mostrados corretamente:
Temas
Oh My Posh é altamente personalizável e tem muitos temas (Lista aqui).
Para usar um tema, basta baixar seu json
e usá-lo ao iniciar o Oh My Posh.
No exemplo abaixo, o tema está em ~/.poshthemes/aliens.omp.json
:
eval "$(oh-my-posh init zsh --config ~/.poshthemes/aliens.omp.json)"
Em seguida, saia do shell e entre novamente para carregar a configuração.
Personalizando seu tema
Oh My Posh tem muitos segmentos que podem ser usados. Alguns que acho interessantes são:
- Git: Pode mostrar o status do repositório git, arquivos alterados, status de rebase/merge e muito mais;
- Status Code: Mostra o status do último comando executado, se foi bem-sucedido ou não;
- Root: Mostra se o usuário logado é root.
Também podemos usar o segmento Command para executar qualquer comando e imprimir a saída.
Assim como algumas configurações, por exemplo:
- Console title: Personalize o que é mostrado na barra de título do terminal. Eu o uso com um texto fixo no meu servidor doméstico para identificar facilmente quando estou conectado a ele;
- Transient Prompt: Substitui o modelo para o histórico do shell por um mais simples;
- Tooltip: Mostra informações à direita quando um comando especificado é digitado. Por exemplo, mostra a branch git quando “git” é digitado.
💡 Oh My Posh é escrito em Go, então podemos usar Go Templates para personalizar muitos de seus recursos com condições, acessar variáveis de ambiente e formatar textos. Você pode ver alguns exemplos no meu tema abaixo.
Aqui há uma folha de dicas Unicode para Nerd Fonts para usar ao personalizar o tema.
Meu tema
No meu tema, uso 4 segmentos:
- Session: Mostra um ícone, o usuário logado e o nome do host;
- Path: Mostra o diretório atual (uso o estilo Agnoster Short, mas existem outros);
- Status: Mostra um ícone colorido para o status do último comando do shell (Bem-sucedido/Falhou);
- Git: Mostra o status do git para o repositório se o diretório for um.
ℹ️ Eu mudo a cor e o ícone do segmento
session
de acordo com qual shell estou usando (ícone de servidor para servidor doméstico, ícone do Ubuntu para Ubuntu no WSL).
ℹ💡 Eu uso a propriedade
console_title_template
para um valor diferente (Ubuntu
eServer
) em cada máquina para que o título do terminal mude e eu conecte/desconecte via SSH.
|
|