Passo 2 · Módulo 2 · Traduzir · Módulo 2 · Traduzir · Do iTerm2 ao Warp, chave por chave
Do guia da Rocketseat ao Warp · Visual Course

Do iTerm2 ao Warp, chave por chave

O guia manda clicar em menus do iTerm2. Você vai sair com as mesmas quatro decisões escritas em ~/.warp/settings.toml — e sabendo validar o arquivo sem tropeçar no dialeto do Warp.

Leia primeiro (fonte primária)
Warp — documentação de temas e aparência

A referência das chaves de aparência do Warp. Esta lição traduz cada passo de menu do guia da Rocketseat na chave equivalente, e mostra como conferir o resultado no arquivo.

Leia a versão simples, ou abra a camada técnica em qualquer seção.
1

A grande ideia


O guia foi escrito para o iTerm2, que se configura clicando em menus. O Warp se configura pelo mesmo lugar por baixo: um arquivo de texto. Traduzir o guia é achar, para cada passo do menu, a chave equivalente no ~/.warp/settings.toml.

Pense como… a mesma receita em duas cozinhas: o forno muda de marca, a temperatura não. A analogia quebra num ponto — o Warp tem um forno a mais, que o iTerm2 não tem, e é justamente ele que desliga o prompt do Starship se você não souber que existe.

O Warp lê ~/.warp/settings.toml e o relê a quente: alterar o arquivo com o app aberto já vale para a próxima sessão, sem reiniciar. O dialeto é TOML com duas extensões do draft 1.1 — inline tables em várias linhas e vírgula final — que um parser TOML 1.0 estrito recusa. Isso importa na hora de validar o arquivo por script: normalize antes de dar tomllib.loads.

Ao fim desta lição você consegue
  • Mapear cada instrução do guia (escrita para iTerm2) na chave do Warp
  • Instalar e apontar a JetBrainsMono Nerd Font pelo arquivo, não pelo menu
  • Entender o tema Vesper como dado — 18 cores em YAML
  • Validar o settings.toml por script sem quebrar no dialeto do Warp
TRADUZINDO UMA INSTRUÇÃO Guia iTerm2 · menu Chave settings.toml Warp relê a quente Sessão nova valor aplicado
O caminho de qualquer ajuste: sai do menu do guia, entra numa chave, o Warp relê e a próxima sessão nasce com ele.
O CICLO DE LEITURA DA CONFIGURAÇÃO Warp abre lê settings boot themes/ carrega YAML tema font_name casa família fonte spawn shell injeta env aba arquivo muda relê a quente edit próxima aba valor novo aba
Quando cada chave é lida. As de aparência valem quase na hora; as que viram variável de ambiente valem na próxima aba.
2

O mapa iTerm2 → Warp


São quatro instruções no guia. Cada uma vira uma linha de arquivo.

iTerm2 (o guia) Preferences > Profiles > Text → fonte Preferences > Profiles > Colors → Import Escolher o preset importado Preferences > Profiles > General → shell Prompt = o que o shell imprimir Warp (o alvo) appearance.text.font_name ~/.warp/themes/<nome>.yaml appearance.themes.selected_system_themes session.new_session_shell_override.executable terminal.input.honor_ps1 ← existe só aqui 4 instruções ⇒ 5 chaves
Instrução por instrução. A última linha não tem par: é uma chave que só o Warp tem, e a lição 3 é inteira sobre ela.
~/.warp/ DEPOIS DA IMPLEMENTAÇÃO ~/.warp/ [intacto] └─ settings.toml fonte, tema, shell, honor_ps1 [editado] └─ themes/vesper-warp.yaml 18 cores da paleta [intacto] └─ workflows/rocketseat-*.yaml 7 comandos do guia [novo] └─ tab_configs/startup_config.toml diretório da aba inicial [editado] └─ keybindings.yaml [intacto]
Os arquivos do Warp tocados nesta implementação — o que nasceu, o que mudou e o que ficou como estava.
A TRADUÇÃO EM NÚMEROS 4 instruções no guia 5 chaves no Warp 18 cores no tema 7 workflows criados
O tamanho real da tradução. A quinta chave é a que o guia não podia prever — ela só existe no Warp.

As quatro instruções do guia, já traduzidas. Note o inline table em várias linhas — dialeto do Warp.

~/.warp/settings.toml
[appearance.text]
font_name = "JetBrainsMono Nerd Font"
ai_font_name = "JetBrainsMono Nerd Font"
font_size = 22.0
ligature_rendering_enabled = true

[appearance.themes]
theme = "dark"
selected_system_themes = {
  dark = { custom = { name = "Vesper (Custom)", path = "/Users/acf/.warp/themes/vesper-warp.yaml" } },
  light = "light",
}

[session.new_session_shell_override]
executable = "/opt/homebrew/bin/fish"

Como chegar: Abra com bat ~/.warp/settings.toml. O Warp também expõe tudo isso em Settings, mas o arquivo é a fonte da verdade.

3

A fonte: por que "Nerd Font"


O guia pede JetBrainsMono "com ícones". A JetBrains Mono normal não tem ícones — quem tem é a variante Nerd Font, que empacota a fonte original mais alguns milhares de glifos de ícone. É essa que o prompt do Starship precisa.

TAMANHO DO cmap JetBrains Mono 1000 cp JetBrainsMono NF 11792 cp
Codepoints no cmap de cada fonte. Os ~10.800 a mais são justamente os ícones que o prompt usa.

Instala e depois confirma o nome exato da família — é esse nome que vai no settings.toml.

terminal
brew install --cask font-jetbrains-mono-nerd-font
fc-list : family | tr ',' '\n' | grep -x "JetBrainsMono Nerd Font"

Como chegar: Se o grep não devolver nada, o font_name não vai casar e o Warp cai silenciosamente numa fonte padrão.

O cask instala três famílias: JetBrainsMono Nerd Font (ícones na largura natural), … Nerd Font Mono (ícones forçados a uma célula) e … Nerd Font Propo (proporcional). Para o Warp, a primeira é a escolha: ele já mede a grade por célula e os ícones de largura dupla do Starship (o do Node, por exemplo) ficam com respiro correto. A variante Mono espreme esses ícones; a Propo quebra o alinhamento de colunas do eza -l.

O terminal desenha numa grade fixa? sim JetBrainsMono Nerd Font ícone na largura natural não … Nerd Font Propo proporcional, quebra colunas A variante Mono espreme o ícone; a Propo desalinha o eza -l.
Qual das três famílias que o cask instala usar no Warp.
AS TRÊS VARIANTES DA MESMA FONTE Nerd Font ícone 2 células colunas OK NF Mono ícone 1 célula ícone espremido NF Propo largura variável eza -l desalinha
As três famílias instaladas pelo mesmo cask, e o efeito de cada uma numa saída em colunas.
O settings.toml tem font_name e ai_font_name. Se você trocar só o primeiro, o que acontece?
O terminal muda de fonte, mas o painel do agente continua na fonte antiga — e blocos de código colados lá aparecem sem os ícones. Por isso os dois foram trocados juntos.
4

Em uma imagem


O TEMA VESPER, EM CORES REAIS background #101010 foreground #ffffff accent #FFC799 bright green #99FFE4 red #f5a191 green #90b99f blue #aca1cf white #A0A0A0
A paleta Vesper como o Warp a lê: 4 chaves de topo (background, foreground, accent, cursor) mais 8 cores normais e 8 bright. É só dado — nenhum código.

O tema inteiro. O guia manda importar um .itermcolors pelo menu; no Warp você põe este YAML na pasta e aponta a chave.

~/.warp/themes/vesper-warp.yaml
name: Vesper (Custom)
background: "#101010"
foreground: "#ffffff"
accent: "#FFC799"
cursor: "#ffffff"
details: darker

terminal_colors:
  normal:
    black: "#101010"
    red: "#f5a191"
    green: "#90b99f"
    yellow: "#e6b99d"
    blue: "#aca1cf"
    magenta: "#e29eca"
    cyan: "#ea83a5"
    white: "#A0A0A0"
  bright:
    black: "#7E7E7E"
    red: "#ff8080"
    green: "#99FFE4"
    yellow: "#FFC799"
    blue: "#b9aeda"
    magenta: "#ecaad6"
    cyan: "#f591b2"
    white: "#ffffff"

Como chegar: Qualquer arquivo em ~/.warp/themes/ aparece no seletor de temas do Warp assim que o app relê a pasta.

COMO UM TEMA CHEGA NO WARP Baixar iterm2colorschemes Converter → YAML do Warp Salvar ~/.warp/themes/ Apontar selected_system_themes
O caminho de um tema até a tela. O guia para no passo 1 porque o iTerm2 importa direto; o Warp quer o YAML.
ONDE VESPER PRECISA APARECER vesper-warp.yaml — o terminal 18 cores Vesper.tmTheme — o bat 17 escopos FZF_DEFAULT_OPTS — o fzf 13 slots starship.toml — o prompt símbolos
A mesma paleta reaparece em quatro lugares diferentes. Trocar de tema é trocar esses quatro — a lição 4 fecha os três de baixo.
5

Validar sem quebrar no dialeto


Depois de editar o arquivo, você quer saber que ele continua válido. Só que um parser TOML padrão recusa o arquivo do Warp — e não porque você errou.

terminal — o falso negativo $ python3 -c 'import tomllib; tomllib.load(open("settings.toml","rb"))' TOMLDecodeError: Invalid initial character for a key part (at line 81, column 27) # linha 81 = selected_system_themes = { # inline table em varias linhas + virgula final # TOML 1.1 draft — o Warp escreve, o 1.0 recusa
O erro não é um erro seu: é o parser 1.0 encontrando uma extensão que o próprio Warp gerou.

Um scanner de 12 linhas que aceita exatamente as duas extensões do Warp e entrega o resto ao parser de verdade.

validador tolerante ao dialeto do Warp
# colapsa quebras de linha dentro de {} / [] fora de string e remove a virgula
# final, depois valida com o parser real
out=[];depth=0;q=None;i=0
while i<len(src):
    c=src[i]
    if q:
        out.append(c)
        if c==q: q=None
        elif c=='\\' and q=='"': out.append(src[i+1]); i+=1
    elif c in '"\'': q=c; out.append(c)
    elif c in '{[': depth+=1; out.append(c)
    elif c in '}]': depth-=1; out.append(c)
    elif c=='\n' and depth>0: out.append(' ')
    else: out.append(c)
    i+=1
flat=re.sub(r',(\s*[}\]])', r'\1', ''.join(out))
d=tomllib.loads(flat)

Como chegar: Está embutido no verify.sh do projeto, no bloco D2/D4.

O MAPA DO settings.toml [appearance] — fonte, tema, cursor, abas o visual [terminal] — grade, clipboard, honor_ps1 o comportamento [session] — shell override quem roda [privacy] — 21 regexes de redação não mexer [agents] · [workflows] · [warp_drive] recursos do app
As seções do settings.toml. Esta implementação toca as três primeiras e passa longe da quarta.
ONDE MORAM AS 108 LINHAS [privacy] 34 ln [agents] 30 ln [appearance] 28 ln [code] 9 ln [terminal] 5 ln [session] 2 ln
Linhas por seção neste arquivo. As três em âmbar são as que o guia faz você tocar — 35 linhas de 108.

Seria tentador reescrever o settings.toml em TOML 1.0 estrito. Mas o arquivo tem 21 regexes de redação de segredo escritas em inline tables multilinha, e o Warp reescreve o arquivo sozinho quando você mexe em qualquer preferência pela interface — sua normalização duraria até o próximo clique. Tolerar o dialeto na leitura é a decisão estável; reescrever seria trabalho que o app desfaz.

WARP
Onde mora a configuração do Warp?
clique para virar
~/.warp/settings.toml — mais themes/, workflows/, keybindings.yaml e tab_configs/.
FONTE
Por que "Nerd Font" e não "JetBrains Mono"?
clique para virar
A variante Nerd Font empacota ~10.800 glifos de ícone a mais. Sem eles, o prompt do Starship vira quadradinho.
TOML
Por que o tomllib recusa o settings.toml?
clique para virar
O Warp usa duas extensões do draft TOML 1.1: inline table em várias linhas e vírgula final. Não é erro do arquivo.
6

Experimente


Trocar a fonte do Warp pelo arquivo
1
brew install --cask font-jetbrains-mono-nerd-font
2
Confirme o nome exato: fc-list : family | tr ',' '\n' | grep -i jetbrains
3
Edite font_name e ai_font_name no ~/.warp/settings.toml
4
Abra uma aba nova — o Warp já releu o arquivo
Agora você: troque para outra família Nerd Font (Fira Code NF, Hack NF) e veja o prompt do Starship se manter inteiro; depois tente uma fonte sem Nerd Font e observe os quadradinhos aparecerem.
Revisão da lição 2
Qual chave do Warp corresponde a "Profiles > Colors > Import" do iTerm2?
a está certa: o YAML vai em ~/.warp/themes/ e a chave aponta qual usar em dark e light. b confunde tema com fonte — font_name é tipografia. c é a chave do prompt, assunto da próxima lição, e nada tem a ver com cor.
O tomllib recusou o settings.toml. O que isso significa?
b está certa: inline table multilinha e vírgula final são do draft 1.1. a é o pânico errado — o Warp lê o arquivo normalmente. c daria outra mensagem de erro, e numa coluna diferente.
Na próxima lição vem a chave que não tem equivalente no iTerm2 — e sem a qual todo o trabalho de configurar o Starship fica invisível.