Pular para o conteúdo principal
Não gostou de nenhum dos 18 embutidos? Traga o seu. É um arquivo .json, e o TYBA valida tudo antes de aceitar.

Os dois botões

Configurações → Aparência, na linha da seção Temas: Importar tema… também está na paleta de comandos (⌘P / Ctrl+Shift+P), no grupo Tema.
Importar pelas Configurações não aplica. O tema entra na grade; para usá-lo, clique nele. E clicar pode mudar o modo — veja Modo claro e escuro. Pela paleta de comandos é diferente: lá importar já aplica o tema.

O exemplo

É exatamente isto que o botão Copiar exemplo coloca na sua área de transferência. Edite as cores e importe.

Os campos do topo

Campo desconhecido no topo derruba o arquivo inteiro. Um "author" ou "version" a mais não é ignorado — é erro. O mesmo vale dentro de terminal.
O ui e o terminal são os dois opcionais, e omitir tem um significado útil:
  • Sem terminal, o tema herda a paleta de terminal do TYBA Dark ou do TYBA Light, conforme a base.
  • Sem ui, a interface fica com as superfícies padrão daquela base.
Ou seja: { "name": "Meu Tema", "base": "light" } é um tema válido — só não muda nada. E você só precisa declarar as chaves de ui que quer mudar; o resto herda da base.

ui — as 21 chaves

Qualquer chave fora desta lista é rejeitada. Todas são opcionais.
Tints, glows, cor de seleção, vidro e hover derivam sozinhos dos acentos. Não existe chave para eles — e é por isso que dá para escrever um tema com cinco cores e ele sair coerente.

terminal

16 cores, nem 15 nem 17. Uma lista de outro tamanho é erro — não é preenchida nem cortada.
A ordem do ansi é a de sempre: as 8 normais e depois as 8 brilhantes.

As cores

Só hexadecimal, sempre com #: red, rgb(0,0,0), hsl(...) e #ffff são todos rejeitados. A mensagem de erro diz qual chave estragou.

Nome, id e nomes reservados

O id do tema é o slug do name: minúsculas, e tudo que não é letra ou número vira hífen. Dracula Pro! vira dracula-pro. Café com Leite vira caf-com-leite — acentos não sobrevivem ao slug, mas o name que aparece na grade continua acentuado.
Nome que colide com um tema embutido é recusado — o erro é nome reservado. Não dá para importar algo chamado “Dracula” ou “TYBA Dark” e sobrescrever o original. Escolha outro nome.
Se um nome só tem símbolos (___), o slug fica vazio e o import falha por nome inválido. Dois imports com o mesmo slug: o segundo sobrescreve o primeiro, sem perguntar. A grade continua com uma entrada só.

Tamanho

O arquivo precisa ser um arquivo regular e ter no máximo 256 KB. Acima disso, recusado antes mesmo de ser lido como JSON.

Quando dá errado

Erro de import vira um alerta do sistema com a mensagem de validação — chave errada, cor inválida, ansi de tamanho errado, nome reservado. Nada é gravado.

Onde o tema mora

O import copia o arquivo, já normalizado, para a pasta de configuração do app: O nome do arquivo é o id: dracula-pro.json. O arquivo original de onde você importou não é usado depois — mexer nele não muda nada.
Você pode colocar .json direto nessa pasta em vez de usar o botão. O TYBA lê a pasta toda ao listar os temas. Mas aí não há alerta: arquivo inválido é simplesmente ignorado e o tema não aparece. Arquivo cujo nome bate com um id embutido também é ignorado — o embutido sempre ganha.

O que não existe

Apagou o .json de um tema que estava em uso? O slot cai para o embutido daquela base na próxima leitura. O app não trava.

Veja também

Os temas

Os 18 embutidos, antes de você escrever o seu.

Modo claro e escuro

Onde o seu tema vai cair depois de importado.