---
title: Terminal Noir
url: https://nandomoreira.dev/lab/terminal-noir
collection: lab
tech:
  - Bash
  - jq
  - bats
  - Astro
  - Firebase Hosting
date: 2026-10-20
---

# Terminal Noir

Tema open-source extraído deste site para dar a mesma identidade visual ao sistema inteiro e aos aplicativos que uso: superfícies quase pretas e frias, escalonadas por luminância, um único acento âmbar e um verde-esmeralda para status. Os tokens de design saíram do CSS do nandomoreira.dev e viraram ports para shell, compositor, terminal, editor, navegador e ferramentas de linha de comando, com uma variante clara em tons de papel.

## Problema

O site tinha uma identidade visual definida, mas o desktop em volta dele não:
cada app tinha o próprio tema escuro, com pretos, cinzas e acentos diferentes,
e ajustar uma cor significava caçar o mesmo hex em uma dúzia de arquivos de
configuração.

## Decisões técnicas

Extrair os tokens de design do CSS do site para uma paleta só, em
palette.json, com as cores nomeadas por papel (surface.base, text.muted,
accent.primary) e não por valor. Os papéis de sintaxe ficam em
syntax.json e apontam para nomes da paleta, nunca para hex solto. Cada port é
gerado a partir dela por um script em bash e jq, então mudar uma cor é editar
um arquivo e rodar make build. Os testes em bats conferem a paleta, o
mapeamento de cada port e se os arquivos gerados estão em dia com a fonte. O
site em Astro lê a mesma paleta e o README de cada port no build, para nunca
divergir do tema.

## Resultado

Publicado em licença MIT com 11 ports: Noctalia, niri, Ghostty, VS Code e
Cursor, GTK 4 e libadwaita, Google Chrome, bat e delta, btop, fzf,
Powerlevel10k e Obsidian. Noctalia e Ghostty já têm a variante clara. É o tema
que uso no meu desktop com CachyOS, Niri e Noctalia, de onde saíram todos os
prints abaixo.

## Links

- Repo: https://github.com/nandomoreirame/terminalnoir
- Live: https://terminalnoir.web.app
