pular pro conteúdo
~/docs/desenvolvimento
Desenvolvimento

Compilar

atualizado 2026-11-042 min de leitura editar esta página

Precisa do Zig 0.16. As dependências de C e C++ são baixadas pelo próprio zig build: openh264, Dear ImGui, GLFW, FreeType, NASM e os headers do NVENC e do VA-API.

No Linux, instale as bibliotecas do sistema pra interface e pra captura:

# Arch
sudo pacman -S libportal pipewire libx11 libxext libxfixes wayland libxkbcommon libxrandr libxinerama libxcursor libxi
# Debian / Ubuntu
sudo apt install libgl-dev libportal-dev libpipewire-0.3-dev libx11-dev libxext-dev libxfixes-dev \
  libwayland-dev libxkbcommon-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev

E compile:

zig build                          # app Linux + .exe do Windows + servidor dedicado
zig build run                      # roda o app
zig build test                     # testes de unidade, integração do servidor e codec
zig build bench                    # benchmark do pipeline de vídeo
zig build loadtest -- 8 40 1       # 8 espectadores e mais um num link de 2 Mbit/s, por 40 s
zig build server -Dserver-only     # só o servidor, sem as dependências do app

Os binários saem em zig-out/bin/. Com -Dcpu=x86_64_v2 eles rodam em CPUs x86-64 de 2009 pra cá, como no CI.

Linha de comando
--nome X              seu nome
--criar [porta]       cria uma sala
--entrar host:porta   entra numa sala (aceita convite telinha://…)
--senha X             senha da sala
--admin TOKEN         entra como admin num servidor dedicado
--publico             com --criar: já abre o link público
--transmitir          começa a transmitir assim que conectar
--assistir            assiste todo mundo que estiver ao vivo
--fps N --qualidade N --modo tela|jogo --software
--estatisticas        estatísticas sempre visíveis
Variáveis de ambiente pra investigar problemas
Variável Efeito
TELINHA_DEBUG=1 Imprime o tempo de cada etapa do pipeline. Sem terminal, use Configurações → Depuração.
TELINHA_IDIOMA=en|pt Força o idioma da interface.
TELINHA_PASTA_CONFIG, TELINHA_PASTA_CLIPES Trocam as pastas de configuração e de clipes (telinha portátil).
TELINHA_SEM_GPU_CAPTURA=1 Desliga a captura sem cópias pela placa.
TELINHA_SEM_D3DVP=1 Windows Intel/AMD: manda a imagem pro encoder pela CPU em vez de textura na placa.
TELINHA_SEM_CUDAGL=1 Desliga a ponte CUDA–OpenGL: o NVDEC direto na textura pra quem assiste e a captura sem cópias na NVIDIA pra quem transmite.
TELINHA_SEM_SHADER=1 Faz a conversão de cor na CPU.
TELINHA_SEM_DMABUF=1 Captura por memória compartilhada em vez de DMA-BUF.
TELINHA_CURSOR_EMBUTIDO=1 Deixa o compositor desenhar o cursor no vídeo (Hyprland).
TELINHA_SEM_VAAPI=1 Pula o encoder VA-API no Linux.
TELINHA_SEM_NVENC=1 Pula o encoder NVENC.
TELINHA_SEM_MF=1 Pula o encoder do Media Foundation no Windows.
TELINHA_SEM_WGC=1 Captura janela por PrintWindow no Windows.
TELINHA_SEM_SOM=1 Não toca o áudio recebido.

Se a captura não funcionar ou estiver lenta, zig build captest mostra o método, o formato e o fps real, e salva um quadro.

Pra traduzir a pilha de um relatório de travamento em linhas do código, use tools/simbolos.py com o telinha-simbolos.tar.gz da mesma versão.