Motor e pipeline
Como funciona
Uma paleta, compilada no formato de tema nativo de cada app, com testes que pegam qualquer divergência.
01 / Fonte
Um palette.json
Todas as cores, de noir e paper, ficam por papel no
palette/palette.json.02 / Geração
Ports gerados
O
make buildroda um pequeno script em bash e jq por app, que escreve os arquivos de tema nativos.03 / Validação
Testado contra divergências
Suítes bats conferem a paleta, o mapeamento de cores de cada port e se os ports commitados batem com um build novo.
$ make build
✓ ports/noctalia✓ ports/niri✓ ports/gtk✓ ports/ghostty✓ ports/p10k✓ ports/vscode✓ ports/obsidian✓ ports/bat✓ ports/btop✓ ports/fzf✓ ports/chrome✓ ports/shiki$ make test✓ 53 testes: paleta, mapeamento dos ports, build atualizadoInício rápido
Instalação
Os ports já vêm com os arquivos prontos, então não há nada para compilar. A página de cada port tem o passo a passo completo.
De ports/ghostty, na raiz do repositório:
mkdir -p ~/.config/ghostty/themes
cp terminal-noir-dark terminal-noir-light ~/.config/ghostty/themes/De ports/vscode, na raiz do repositório:
scripts/install-vscode # packages a .vsix and installs it in VS Code and CursorDe ports/bat, na raiz do repositório:
mkdir -p "$(bat --config-dir)/themes"
cp "Terminal Noir.tmTheme" "$(bat --config-dir)/themes/"
bat cache --buildDe ports/fzf, na raiz do repositório:
source /path/to/terminalnoir/ports/fzf/terminal-noir.shCódigo aberto
Como contribuir
Regras básicas
- As cores ficam só no
palette/palette.json. Um port nunca fixa um valor hex; ele lê papéis da paleta. - As cores de sintaxe ficam no
palette/syntax.json, como caminhos da paleta (accent.primary,ansi.bright.cyan). - Os arquivos gerados em
ports/são commitados, para que qualquer pessoa instale um port sem rodar nada. Omake testfalha quando eles divergem da paleta.
Mudando uma cor
- Edite o
palette/palette.json. - Rode
make buildemake test. - Faça o commit da mudança na paleta junto com os ports regenerados.
Adicionando um port
- Crie
scripts/ports/<app>.shdefinindobuild_<app>, que escreve os arquivos em"$OUT/ports/<app>/". Leia as cores de"$PALETTE"(e de"$SYNTAX"para o destaque de sintaxe) comjq; vejascripts/ports/btop.shcomo exemplo curto. - Adicione
<app>à listaPORTSemscripts/build. - Adicione os arquivos gerados a
GENERATEDemtests/build.bats, e um teste de mapeamento emtests/ports.batsque confira as cores principais do app contrapal <variant> <role>. - Escreva o
ports/<app>/README.mdcom o passo a passo: um título# Terminal Noir for <App>, um parágrafo de descrição (o site mostra no card do port) e os passos. Escreva também oREADME.pt-br.md, com o título# Terminal Noir para <App>e os mesmos blocos de código. - Registre o port no
ports.json(nome, categoria, variantes, site) e liste no README principal. - Rode
make build test lint.
Prefira o formato de tema nativo do app, e inclua uma variante clara quando o app permitir trocar de tema.