Windows Terminal - Instalação e Configuração

Windows Terminal - Instalação e Configuração

Compartilho todas as configurações que realizei no Windows Terminal para torná-lo mais produtivo e agradável


Introdução

Personalizar seu ambiente de desenvolvimento é uma jornada única para cada pessoa. É aquele toque especial que torna as longas horas de código mais agradáveis e produtivas. E é exatamente sobre isso que vamos conversar hoje!

Vou guiá-lo através da minha experiência pessoal de customização do Windows Terminal, compartilhando cada passo e configuração que implementei para criar um ambiente que funciona perfeitamente para mim. Mas lembre-se: isso é apenas um ponto de partida, um mapa que você pode usar para explorar suas próprias preferências.

Afinal, não existe certo ou errado quando falamos de personalização - o que importa é criar um ambiente que reflita seu estilo e otimize seu fluxo de trabalho. Seja nas escolhas de cores, temas ou atalhos de teclado, você terá total liberdade para adaptar essas sugestões ao seu gosto.

E para facilitar ainda mais sua jornada, ao final deste artigo, compartilharei meus arquivos de configuração completos. Assim, você poderá usá-los como referência ou ponto de partida para criar sua própria configuração única do Windows Terminal.

Vamos começar?


O que é Windows Terminal?

O Terminal do Windows é um aplicativo de terminal moderno para usuários de ferramentas de linha de comando e shells como o Prompt de Comando, o PowerShell e o WSL (Subsistema do Windows para Linux). Seus principais recursos incluem suporte a várias guias, painéis, caracteres e um mecanismo de renderização de texto acelerado por GPU com a capacidade de criar os próprios temas e personalizar texto, cores, telas de fundo e atalhos.


Definindo o Windows Terminal como o aplicativo padrão

1- Clique em Iniciar → digite Windows Terminal

image.png

2- Clique em Configurações

image.png

3- Em Aplicativo terminal padrão → escolha a opção Windows Terminal

image.png


Definindo o Linux (WSL2) como perfil padrão do Terminal

1- Ainda em Configurações → em Perfil padrão escolha a opção Ubuntu

image.png


Aplicando efeito Acrílico no Windows Terminal

1- Ainda em Configurações → no menu Perfis → clique no perfil Ubuntu → selecione a aba AparênciaHabilite o Acrílico e defina a porcentagem de sua preferência

image.png


Instalando fonte do Nerd Fonts

Eu normalmente gosto de utilizar duas fontes:

  • Fira Code

  • Source Code Pro

Para efeitos de tutorial, vou demonstrar o exemplo usando a fonte Fira Code, mas o mesmo passo a passo se aplica para qualquer fonte.

1- Acesse o site do Nerd Fonts em:

2- Clique em Download

image.png

3- Acesse sua pasta Downloads → extraia a pasta FiraCode

image.png

4- Pressione Ctrl + A para selecionar todas as fontes → clique com o lado direito do mouse → Instalar

image.png

5- Aguarde a instalação ser concluída

Caso apareça uma mensagem informando que a fonte já está instalada, clique em Substituir

image.png


Instalando o Zsh Shell no WSL2

1- Atualize o linux com o comando:

sudo apt update

image.png

2- Instale o Zsh Shell com o comando:

sudo apt install zsh -y

image.png


Instalando o ohMyZsh no WSL2

1- Digite o comando → pressione y quando solicitado:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

image.png

Ao final você deverá ver uma tela parecida com:

image.png


Instalando o tema Powerlevel10k

1- Digite o comando:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

image.png

2- Abra o arquivo de configuração ~/.zshrc digitando o comando:

sudo nano ~/.zshrc

image.png

3- Altere a linha ZSH_THEME de robbyrussel para powerlevel10k/powerlevel10k → pressione Ctrl + XYEnter para salvar

image.png

4- Entraremos agora na configuração do tema Powerlevel10k

Observe que não conseguimos ver o ícone de "Diamante" ainda, isso ocorre porque ainda não definimos para o Windows Terminal usar nossa fonte FiraCode que baixamos lá no início deste passo a passo

image.png

Então nesse momento, apenas clique em q para sair da configuração do tema e você verá algo parecido com:

image.png

5- Agora clique na seta para baixoConfigurações

image.png

6- No menu Perfis → Clique em Ubuntu → mude para a aba Aparência → altere o campo Tipo de Fonte para FiraCode Nerd Font Mono → Clique em Salvar

image.png

7- Feche e abra novamente o Windows Terminal

8- Agora ao abrir, podemos ver o ícone de "Diamante" e seguir com a configuração do tema Powerlevel10k → pressione y

image.png

9- Também podemos ver o ícone de cadeado, então pressione y

image.png

10- Também podemos ver o logo do Debian, então novamente basta pressionarmos y

image.png

11- Por fim, podemos ver todos os ícones, então você já sabe né, pressione y novamente


Atenção: Todas as opções dos passos abaixo da configuração do tema são opcionais, escolha de acordo com a sua preferência, abaixo está só um exemplo.

12- Agora pressione 3 para escolhermos a opção Rainbow

image.png

13- Pressione 1 para escolhermos a opção Unicode

image.png

14- Pressione 1 para não mostrar o horário

image.png

15- Pressione 1 para definir o separador

image.png

16- Pressione 4 para definir o separador final

image.png

17- Pressione 5

image.png

18- Pressione 1

image.png

19- Pressione 2

image.png

20- Pressione 2

image.png

21- Pressione 1

image.png

22- Pressione n

image.png

23- Pressione 1

image.png

24- Pressione y para aplicar as configurações do tema Powerlevel10k em nosso arquivo ~/.zshrc

image.png

25- Feche e abra novamente seu Windows Terminal


Aplicando ColorScheme Homebrew no Windows Terminal

1- Acesse o site:

2- Abra a lista suspensa e selecione Homebrew

image.png

3- Clique no botão Get Theme

image.png

4- Agora vá para seu Windows Terminal → Configurações → Abrir o arquivo JSON

image.png

5- Abra com um editor de texto (por exemplo o bloco de notas)

→ procure pelo bloco schemes

→ após a primeira [ pressione Enter para ir para linha abaixo

→ cole o conteúdo que copiamos do botão Get Theme do passo 3

→ após o } adicione uma vírgula

→ salve o arquivo

💡
Dica: Não se preocupe com o alinhamento, quando salvarmos o Windows irá corrigir isso

image.png

6- Retorne as configurações do Windows Terminal → no menu Perfis clique em Ubuntu → selecione a aba Aparência → Altere o campo Esquema de Cores para Homebrew

image.png

7- Salve as alterações → Feche e abra novamente o Windows Terminal → você terá um resultado parecido com:

image.png

💡
Dica: Escolhemos o tema/colorScheme Homebrew, mas você pode repetir esses passos quantas vezes quiser com temas e cores diferentes de sua preferência.

Você também pode alterar as cores de um tema existente em:

  • Windows Terminal → Configurações → Esquemas de cores

Remova a pasta do Windows como padrão do seu Linux

Por padrão seu WSL2 irá montar a pasta do seu usuário do Windows no Linux:

image.png

Para removermos isso e irmos direto a pasta /home do Linux quando conectarmos, vamos fazer:

10- Acesse Configurações → no menu Perfis escolha Ubuntu → No campo Diretório Inicial → mude de %USERPROFILE% para ~

11- Agora ao abrir seu terminal do Linux, iremos diretamente para a pasta /home

image.png


Adicione Plugins

Zsh Autosuggestions

Conforme você digita, você verá uma sugestão de conclusão.

Se você pressionar a tecla de seta para a direita, ela preencherá a sugestão. Se você clicar na guia, ele listará mais sugestões abaixo. Continue a clicar na guia para percorrer o ciclo completo.

1- Digite o comando:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

2- Acesse o arquivo:

nano ~/.zshrc

3- Edite a linha plugins adicionando zsh-autosuggestions

image.png


Zsh-syntax-highlighting

Quando você digitar o comando corretamente ele ficará na cor verde, quando você digitar um comando errado, ficará na cor vermelha tornando mais fácil encontrar erros.

1- Digite o comando:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

2- Acesse o arquivo:

nano ~/.zshrc

3- Edite a linha plugins adicionando zsh-syntax-highlighting

image.png


Copypath

Às vezes, você está no fundo de uma pasta e lembra que precisa voltar para atualizar outro arquivo na pasta pai. Você não quer ter que voltar e reinserir esse longo caminho novamente, use o copypath para copiar o caminho do seu diretório atual


Copyfile

Copie o conteúdo de um arquivo para a área de transferência. É um recurso que você não sabe que precisa até precisar.


CopyBuffer

Pressione Ctrl + O e copie o texto do comando digitado na linha de comando, você pode pensar que não precisará dele, mas certamente vai.


JsonTools

Com certeza você vai se deparar em cenários em que chamadas de API ou solicitações CURL irão retornar um monte de json confusos de ler na linha de comando, esse plugin simplesmente irá "imprimir" bem o json em sua linha de comando. E pode ser uma boa alternativa para a ferramenta jq.

image.png


Divida o Terminal em Painéis

Existem atalhos muito úteis no teclado, um deles que mais uso é dividir o mesmo terminal em painéis diferentes. Isso me ajuda principalmente quando em um painel posso ver meus containers do docker, já no outro posso estar em um SSH e em outro vendo os logs. Também muito útil quando preciso conectar em várias instâncias SSH e executar o mesmo script, fazendo e acompanhando tudo de uma única vez.

  • Divida para baixo (split down): pressione Alt + Shift + Hífen (-)
Este - não é numérico e sim um hífen mesmo

  • Divida para a direita (split right): pressione Alt + Shif + Soma (+)
Este + não é numérico e sim ao lado do backspace do teclado

  • Combine para baixo e para direita quantas vezes quiser e de acordo com sua preferência:

  • Alterne de um painel para o outro com o atalho Alt + Seta

  • Feche um painel com o atalho Ctrl + Shift + W


Minha Configuração Atualizada

Isso é muito pessoal, cada um tem sua preferência, e a maioria de nós irá mudar isso com certa frequência para não ficar cansativo e enjoativo.

Eu mesmo mudo meus temas, fontes e cores o tempo todo, porém aqui compartilho sempre meu arquivo settings.json atualizado para que eu possa recupera-lo quando precisar ou para você que gostar também poder usar.


⚠️ Importante: Ao utilizar esta configuração, você precisará personalizar alguns campos específicos para o seu ambiente:

  • defaultProfile: Identifica qual perfil será carregado por padrão ao abrir o terminal

  • guid: Um identificador único para cada perfil

  • name: O nome que você deseja exibir para cada perfil

Abaixo você encontrará um exemplo completo da configuração, que poderá usar como base para criar a sua. Lembre-se de ajustar estes campos conforme suas necessidades antes de aplicar as configurações.


{
    "$help": "https://aka.ms/terminal-documentation",
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "actions": 
    [
        {
            "command": "toggleBroadcastInput",
            "id": "User.toggleBroadcastInput",
            "keys": "alt+shift+b"
        },
        {
            "command": 
            {
                "action": "copy",
                "singleLine": false
            },
            "id": "User.copy.644BA8F2",
            "keys": "ctrl+c"
        },
        {
            "command": "paste",
            "id": "User.paste",
            "keys": "ctrl+v"
        },
        {
            "command": "find",
            "id": "User.find",
            "keys": "ctrl+shift+f"
        },
        {
            "command": 
            {
                "action": "splitPane",
                "split": "auto",
                "splitMode": "duplicate"
            },
            "id": "User.splitPane.A6751878",
            "keys": "alt+shift+d"
        }
    ],
    "centerOnLaunch": false,
    "copyFormatting": "none",
    "copyOnSelect": true,
    "defaultProfile": "{3641aa37-d513-51d1-a250-67449a7b34e5}",
    "experimental.detectURLs": true,
    "launchMode": "maximized",
    "newTabMenu": 
    [
        {
            "type": "remainingProfiles"
        }
    ],
    "profiles": 
    {
        "defaults": {},
        "list": 
        [
            {
                "commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "hidden": false,
                "name": "Windows PowerShell"
            },
            {
                "commandline": "%SystemRoot%\\System32\\cmd.exe",
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "hidden": false,
                "name": "Prompt de comando"
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            },
            {
                "colorScheme": "SimplesCloud - Night Owl",
                "font": 
                {
                    "face": "SauceCodePro Nerd Font",
                    "size": 18
                },
                "guid": "{3641aa37-d513-51d1-a250-67449a7b34e5}",
                "hidden": false,
                "name": "[Work] - SimplesCloud-Ubuntu-22.04",
                "source": "Windows.Terminal.Wsl"
            },
            {
                "guid": "{4ff56d04-d9cf-57ea-bae2-ad396374e7e3}",
                "hidden": false,
                "name": "Ubuntu 22.04.5 LTS",
                "source": "CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc"
            }
        ]
    },
    "schemes": 
    [
        {
            "background": "#000000",
            "black": "#000000",
            "blue": "#0000B2",
            "brightBlack": "#666666",
            "brightBlue": "#0000FF",
            "brightCyan": "#00E5E5",
            "brightGreen": "#00D900",
            "brightPurple": "#E500E5",
            "brightRed": "#E50000",
            "brightWhite": "#E5E5E5",
            "brightYellow": "#E5E500",
            "cursorColor": "#23FF18",
            "cyan": "#00A6B2",
            "foreground": "#00FF00",
            "green": "#00A600",
            "name": "Homebrew",
            "purple": "#B200B2",
            "red": "#990000",
            "selectionBackground": "#083905",
            "white": "#BFBFBF",
            "yellow": "#999900"
        },
        {
            "background": "#1D2033",
            "black": "#282936",
            "blue": "#0717FF",
            "brightBlack": "#626483",
            "brightBlue": "#62D6E8",
            "brightCyan": "#A1EFE4",
            "brightGreen": "#EBFF87",
            "brightPurple": "#B45BCF",
            "brightRed": "#FF0909",
            "brightWhite": "#F7F7FB",
            "brightYellow": "#00F769",
            "cursorColor": "#AEAFAD",
            "cyan": "#A1EFE4",
            "foreground": "#FFFFFF",
            "green": "#49E287",
            "name": "SimplesCloud",
            "purple": "#B45BCF",
            "red": "#FF0909",
            "selectionBackground": "#FFFFFF",
            "white": "#E9E9F4",
            "yellow": "#00F769"
        },
        {
            "background": "#FBFBFB",
            "black": "#403F53",
            "blue": "#288ED7",
            "brightBlack": "#403F53",
            "brightBlue": "#288ED7",
            "brightCyan": "#2AA298",
            "brightGreen": "#08916A",
            "brightPurple": "#D6438A",
            "brightRed": "#DE3D3B",
            "brightWhite": "#979797",
            "brightYellow": "#DAAA01",
            "cursorColor": "#FFFFFF",
            "cyan": "#2AA298",
            "foreground": "#403F53",
            "green": "#08916A",
            "name": "SimplesCloud - Light Owl",
            "purple": "#D6438A",
            "red": "#DE3D3B",
            "selectionBackground": "#FFFFFF",
            "white": "#F0F0F0",
            "yellow": "#E0AF02"
        },
        {
            "background": "#011627",
            "black": "#011627",
            "blue": "#82AAFF",
            "brightBlack": "#575656",
            "brightBlue": "#82AAFF",
            "brightCyan": "#7FDBCA",
            "brightGreen": "#22DA6E",
            "brightPurple": "#C792EA",
            "brightRed": "#EF5350",
            "brightWhite": "#FFFFFF",
            "brightYellow": "#FFEB95",
            "cursorColor": "#FFFFFF",
            "cyan": "#21C7A8",
            "foreground": "#D6DEEB",
            "green": "#22DA6E",
            "name": "SimplesCloud - Night Owl",
            "purple": "#C792EA",
            "red": "#EF5350",
            "selectionBackground": "#FFFFFF",
            "white": "#FFFFFF",
            "yellow": "#ADDB67"
        }
    ],
    "themes": []
}

E aqui compartilho também meu ~/.zshrc atualizado pelos mesmos motivos.

Este é meu arquivo de configuração do Zsh Shell, serve mais para quando eu precisar consultar e recuperar, se você usar ele provavelmente deverá editar mudando alguns nomes, caminhos e valores reais que você usa, então por favor atente-se que copiar isso e colar pode não funcionar perfeitamente para você sem alguns ajustes!
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
export PATH=$PATH:/home/tech/bin:PATH

# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="powerlevel10k/powerlevel10k"

# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"

# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled  # disable automatic updates
# zstyle ':omz:update' mode auto      # update automatically without asking
# zstyle ':omz:update' mode reminder  # just remind me to update when it's time

# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13

# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"

# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"

# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git zsh-autosuggestions zsh-syntax-highlighting copypath copyfile copybuffer jsontools)

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment
# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
#   export EDITOR='vim'
# else
#   export EDITOR='mvim'
# fi

# Compilation flags
# export ARCHFLAGS="-arch x86_64"

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

eval "$(ssh-agent -s)" &> /dev/null
ssh-add ~/.ssh/bitbucket_client1_personal_account_wsl2 &> /dev/null
ssh-add ~/.ssh/bitbucket_simplescloud_account_wsl2 &> /dev/null
ssh-add ~/.ssh/bitbucket_client2_account_wsl2 &> /dev/null

Espero que essas informações tenham sido úteis para você!