Configuração

Dois arquivos, lidos nesta ordem:

  1. ~/.config/trunade/config.toml, para todas as aulas.
  2. trunade.toml ao lado do .md, só para aquela pasta.

Cada um sobrescreve só o que declara. Com --config arquivo.toml, só esse arquivo é lido.

Exemplo

timeout_seconds = 10
compile_timeout_seconds = 60
output_limit_bytes = 1048576
editor = ["zed", "{file}:{line}"]

[languages.cpp]
aliases = ["c++", "cxx", "cc"]
source = "main.cpp"
compile = ["g++-16", "-std=c++23", "-Wall", "-Wextra", "-fdiagnostics-color=always", "{flags}", "{source}", "-o", "{binary}"]
run = ["{binary}"]

Campos

Campo O que faz
timeout_seconds tempo limite de execução com stdin fixo
compile_timeout_seconds tempo limite da compilação
output_limit_bytes limite de saída por execução
editor comando para abrir o .md na linha do bloco

Linguagens

Cada [languages.nome] substitui a linguagem inteira.

Campo O que faz
aliases outros nomes aceitos no fence
source nome do arquivo-fonte
compile comando de compilação (opcional; Python não tem)
run comando de execução

Nos comandos, {source} e {binary} viram os caminhos temporários e {flags} vira as flags do bloco, em vários argumentos.

Exemplo: Rust

[languages.rust]
aliases = ["rs"]
source = "main.rs"
compile = ["rustc", "-O", "{flags}", "{source}", "-o", "{binary}"]
run = ["{binary}"]

Preferências da página

O que você escolhe no painel ☰ (fontes, tema, cores do código, largura, tamanho, idioma) fica em ~/.config/trunade/preferences.toml, gravado pelo próprio Trunade!. Vale para todas as aulas. Dá para editar à mão; valores desconhecidos são ignorados.

theme = "light"            # auto | light | dark
code_theme = "dark"        # auto | light | dark
locale = "pt"              # pt | en
font_scale = 1.2
text_width = "narrow"      # narrow | wide
title_font = "gloock"      # gloock | ibm-plex-mono | fraunces | cormorant-garamond | young-serif
body_font = "inter"        # jetbrains-mono | fira-code | inter | open-sans
code_font = "fira-code"    # jetbrains-mono | fira-code

Registro de uso

Cada vez que o Trunade! abre uma aula, ele grava um registro local em ~/.local/share/trunade/logs/ (ou $XDG_DATA_HOME/trunade/logs/), um arquivo por sessão, em JSON Lines: 2026-10-16T14-02-33Z-aula14.jsonl. O caminho aparece no terminal ao iniciar.

O registro é anônimo e nunca sai da máquina. Ele guarda o que aconteceu na página, não quem estava na sala:

Evento Campos
start, document nome do .md, versão, número de blocos (document quando o arquivo muda)
connect, disconnect, visibility página aberta, fechada, em segundo plano
section título em que a página parou
run bloco (cell, line, language), se foi editado na página, número de casos
case resultado e veredito de cada caso de teste, tempo
finished resultado, tempos, primeira linha do erro de compilação
quiz pergunta, opções escolhidas, se acertou
step, zoom, print, runAll passo mostrado, bloco ampliado, PDF, rodar tudo

Todos os eventos têm time em UTC. Para apagar, basta apagar os arquivos.