Más pantallas. Solo viaja lo que cambia.
Vitral convierte tablets, teléfonos, laptops y placas como Raspberry Pi en monitores adicionales para Linux. En lugar de enviar una foto plana del escritorio, lo envía por capas.
cargo run -r --bin vitral-bench - 94 %
- menos datos al hacer scroll
- >99 %
- menos datos al mover ventanas
- 60 fps
- sostenidos por red local
- ~3 ms
- de ida y vuelta
- 0
- líneas de código inseguro
Capas en el emisor.
Memoria en el receptor.
El emisor describe la pantalla y el receptor la recuerda. Entre los dos solo viaja la diferencia.
Arrastra la ventana.
Compara cuántos datos enviaría una pantalla plana y cuántos envía Vitral por la misma acción.
Arrastra la ventana con el ratón o el dedo
Vitral envía solo la nueva posición de la ventana: unos 43 bytes por cuadro.
Arrastrar: estimación con la compresión medida en el benchmark. Scroll, escribir y video: resultados medidos a 1920×1080.
Lo que ya tienes, como monitor.
Receptor de escritorio para Linux, Windows y macOS, por red.
App receptora conectada por USB, con táctil y lápiz.
Monitores normales por HDMI, conectados por USB.
Driver del kernel: Linux ve un monitor nuevo, sin captura de pantalla.
Una API pequeña. Sin magia.
El motor recibe el estado de cada superficie y decide qué enviar. El receptor solo aplica mensajes. Todo verificable con un 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. Describe cada pantalla como capas y envía solo lo que cambia.
- 01
Capas
El emisor describe cada pantalla como una pila de capas: fondo, ventanas, video y cursor.
- 02
Caché
El receptor guarda cada capa. Lo que ya tiene nunca vuelve a viajar.
- 03
Solo cambios
Se envía la zona exacta que cambió, comprimida sin pérdidas. Mover y desplazar cuesta bytes.
- 04
Cuadros atómicos
La imagen se arma solo al confirmar el cuadro. Nunca se ve a medias. El cursor va siempre primero.
Seis etapas, cada una medida.
- 01 Completada
Núcleo del protocolo
Especificación v0, motor, receptor, benchmark y pruebas.
- 02 Siguiente
Aplicaciones reales
Compositor Wayland anidado: cada ventana real es una capa.
- 03 Planeada
Receptor Android
App con composición por hardware, USB, táctil y lápiz.
- 04 Planeada
Placas por USB
Receptor para Raspberry Pi con salida directa a HDMI.
- 05 Planeada
Driver de Linux
Las pantallas de Vitral aparecen como monitores reales.
- 06 Planeada
Capas de video
Codificación por hardware y video original sin recomprimir.
Abierto por diseño.
Vitral usa una licencia distinta para cada parte, según su función.
| Componente | Licencia | Para qué |
|---|---|---|
| Especificación y documentación | CC-BY-4.0 | Cualquiera puede implementar el protocolo. |
| Librerías del protocolo y del receptor | MIT o Apache-2.0 | Otros proyectos y dispositivos pueden integrarlas libremente. |
| Motor y aplicaciones | GPL-3.0 | Las mejoras a las aplicaciones siguen siendo abiertas. |
| Driver del kernel | GPL-2.0 | Requisito para formar parte de Linux. |
Licencias comerciales disponibles para fabricantes y empresas.
Diseño independiente: ninguna parte procede de drivers, firmware ni documentación propietaria.
Las pantallas extra merecen algo mejor.
Durante años, añadir un monitor por USB en Linux ha dependido de software cerrado que se rompe con cada actualización. Vitral parte de otra idea: un protocolo abierto, documentado y medido, que cualquiera puede implementar en el dispositivo que ya tiene. Sin cajas negras. Sin depender de nadie.
Preguntas frecuentes.
¿Ya puedo usar mi tablet como monitor?
Todavía no. El núcleo del protocolo está terminado y medido; la app para Android llega en la etapa 3.
¿Necesito una tarjeta gráfica?
No. Vitral funciona solo con el procesador y aprovechará la GPU cuando exista.
¿Funciona con Windows o macOS?
El receptor de escritorio ya funciona en los tres sistemas. El emisor empieza en Linux.
¿Es gratis?
Sí. Vitral es código abierto. Las empresas que lo necesiten pueden obtener licencias comerciales.
Construyamos más pantallas.
Colaboraciones, fabricantes, licencias o simplemente curiosidad.
Apoya el proyecto
Vitral es gratuito y abierto. Tu aporte paga hardware de pruebas y horas de desarrollo.