Mais telas. Só viaja o que muda.
Vitral transforma tablets, celulares, notebooks e placas como Raspberry Pi em monitores adicionais para Linux. Em vez de enviar uma foto plana da área de trabalho, envia em camadas.
cargo run -r --bin vitral-bench - 94%
- menos dados ao rolar
- >99%
- menos dados ao mover janelas
- 60 fps
- sustentados em rede local
- ~3 ms
- de ida e volta
- 0
- linhas de código inseguro
Camadas no emissor.
Memória no receptor.
O emissor descreve a tela e o receptor a lembra. Entre os dois só viaja a diferença.
Arraste a janela.
Compare quantos dados uma tela plana enviaria e quantos o Vitral envia pela mesma ação.
Arraste a janela com o mouse ou o dedo
O Vitral envia só a nova posição da janela: cerca de 43 bytes por quadro.
Arrastar: estimativa com a compressão medida no benchmark. Rolagem, digitar e vídeo: medidos em 1920×1080.
O que você já tem, como monitor.
Receptor de desktop para Linux, Windows e macOS, pela rede.
App receptor conectado por USB, com toque e caneta.
Monitores comuns por HDMI, conectados por USB.
Driver do kernel: o Linux vê um monitor novo, sem captura de tela.
Uma API pequena. Sem mágica.
O motor recebe o estado de cada superfície e decide o que enviar. O receptor só aplica mensagens. Tudo verificável com um comando.
// One layer per surface. Only changes leave the machine.
let mut engine = Engine::new(EngineConfig::default());
engine.add_output(0, 1920, 1080, 60_000)?;
engine.create_layer(WINDOW, 0, 864, 648)?;
// Every frame: report state, the engine diffs it.
engine.update_layer(WINDOW, rect, &pixels)?;
engine.place_layer(WINDOW, placement)?;
engine.move_cursor(0, cx, cy, true)?;
for msg in engine.commit(0, now_us)? {
link.send(&msg)?;
} $ cargo run --release --bin vitral-bench
scenario layered KB/f flat KB/f saving verified
idle 0.0 0.0 0% 61/61
typing 6.9 6.9 0% 61/61
scrolling 10.4 176.0 94% 61/61
window drag 0.1 213.7 100% 61/61
video 932.2 932.2 0% 61/61
verified: frames reproduced pixel for pixel. Descreva cada tela como camadas e envie só o que muda.
- 01
Camadas
O emissor descreve cada tela como uma pilha de camadas: fundo, janelas, vídeo e cursor.
- 02
Cache
O receptor guarda cada camada. O que ele já tem nunca viaja de novo.
- 03
Só mudanças
Envia-se apenas a área exata que mudou, comprimida sem perdas. Mover e rolar custam bytes.
- 04
Quadros atômicos
A imagem só é montada quando o quadro é confirmado, nunca pela metade. O cursor sempre vai primeiro.
Seis etapas, cada uma medida.
- 01 Concluída
Núcleo do protocolo
Especificação v0, motor, receptor, benchmark e testes.
- 02 Próxima
Aplicações reais
Compositor Wayland aninhado: cada janela real é uma camada.
- 03 Planejada
Receptor Android
App com composição por hardware, USB, toque e caneta.
- 04 Planejada
Placas por USB
Receptor para Raspberry Pi com saída direta em HDMI.
- 05 Planejada
Driver do Linux
As telas do Vitral aparecem como monitores reais.
- 06 Planejada
Camadas de vídeo
Codificação por hardware e vídeo original sem recompressão.
Aberto por design.
O Vitral usa uma licença diferente para cada parte, de acordo com sua função.
| Componente | Licença | Para quê |
|---|---|---|
| Especificação e documentação | CC-BY-4.0 | Qualquer pessoa pode implementar o protocolo. |
| Bibliotecas do protocolo e do receptor | MIT ou Apache-2.0 | Outros projetos e dispositivos podem integrá-las livremente. |
| Motor e aplicações | GPL-3.0 | Melhorias nas aplicações continuam abertas. |
| Driver do kernel | GPL-2.0 | Requisito para fazer parte do Linux. |
Licenças comerciais disponíveis para fabricantes e empresas.
Design independente: nenhuma parte vem de drivers, firmware ou documentação proprietária.
Telas extras merecem algo melhor.
Por anos, adicionar um monitor USB no Linux dependeu de software fechado que quebra a cada atualização. O Vitral parte de outra ideia: um protocolo aberto, documentado e medido, que qualquer pessoa pode implementar nos dispositivos que já tem. Sem caixas-pretas. Sem depender de ninguém.
Perguntas frequentes.
Já posso usar meu tablet como monitor?
Ainda não. O núcleo do protocolo está pronto e medido; o app para Android chega na etapa 3.
Preciso de placa de vídeo?
Não. O Vitral funciona só com o processador e usará a GPU quando houver uma.
Funciona no Windows ou macOS?
O receptor de desktop já roda nos três sistemas. O emissor começa no Linux.
É gratuito?
Sim. O Vitral é código aberto. Empresas que precisarem podem obter licenças comerciais.
Vamos construir mais telas.
Colaborações, fabricantes, licenças ou simples curiosidade.
Apoie o projeto
O Vitral é gratuito e aberto. Seu apoio paga hardware de testes e horas de desenvolvimento.