Plus d’écrans. Seul ce qui change voyage.
Vitral transforme tablettes, téléphones, portables et cartes comme le Raspberry Pi en moniteurs supplémentaires pour Linux. Au lieu d’envoyer une image plate du bureau, il l’envoie par calques.
cargo run -r --bin vitral-bench - 94 %
- de données en moins au défilement
- >99 %
- de données en moins en déplaçant une fenêtre
- 60 i/s
- soutenues en réseau local
- ~3 ms
- aller-retour
- 0
- ligne de code unsafe
Des calques côté émetteur.
De la mémoire côté récepteur.
L’émetteur décrit l’écran et le récepteur s’en souvient. Entre les deux, seule la différence voyage.
Déplacez la fenêtre.
Comparez la quantité de données qu’enverrait un écran plat et celle qu’envoie Vitral pour la même action.
Faites glisser la fenêtre à la souris ou au doigt
Vitral n’envoie que la nouvelle position de la fenêtre : environ 43 octets par image.
Glisser : estimation fondée sur la compression mesurée dans le benchmark. Défiler, saisir et vidéo : mesurés en 1920×1080.
Ce que vous possédez déjà, comme moniteur.
Récepteur de bureau pour Linux, Windows et macOS, via le réseau.
Application réceptrice connectée en USB, avec tactile et stylet.
Moniteurs HDMI classiques, connectés en USB.
Pilote noyau : Linux voit un nouveau moniteur, sans capture d’écran.
Une petite API. Sans magie.
Le moteur reçoit l’état de chaque surface et décide quoi envoyer. Le récepteur ne fait qu’appliquer des messages. Le tout vérifiable en une commande.
// 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. Décrivez chaque écran en calques et n’envoyez que ce qui change.
- 01
Calques
L’émetteur décrit chaque écran comme une pile de calques : fond, fenêtres, vidéo et curseur.
- 02
Cache
Le récepteur conserve chaque calque. Ce qu’il possède déjà ne voyage plus jamais.
- 03
Seulement les changements
Seule la zone exacte qui a changé est envoyée, compressée sans perte. Déplacer et défiler coûtent des octets.
- 04
Images atomiques
L’image n’est composée qu’à la validation, jamais à moitié. Le curseur passe toujours en premier.
Six étapes, chacune mesurée.
- 01 Terminée
Cœur du protocole
Spécification v0, moteur, récepteur, benchmark et tests.
- 02 Suivante
Applications réelles
Compositeur Wayland imbriqué : chaque vraie fenêtre est un calque.
- 03 Prévue
Récepteur Android
Application avec composition matérielle, USB, tactile et stylet.
- 04 Prévue
Cartes en USB
Récepteur Raspberry Pi avec sortie HDMI directe.
- 05 Prévue
Pilote Linux
Les écrans Vitral apparaissent comme de vrais moniteurs.
- 06 Prévue
Calques vidéo
Encodage matériel et vidéo d’origine sans recompression.
Ouvert par conception.
Vitral utilise une licence différente pour chaque partie, selon son rôle.
| Composant | Licence | Pourquoi |
|---|---|---|
| Spécification et documentation | CC-BY-4.0 | Tout le monde peut implémenter le protocole. |
| Bibliothèques du protocole et du récepteur | MIT ou Apache-2.0 | D’autres projets et appareils peuvent les intégrer librement. |
| Moteur et applications | GPL-3.0 | Les améliorations des applications restent ouvertes. |
| Pilote noyau | GPL-2.0 | Exigé pour faire partie de Linux. |
Des licences commerciales sont disponibles pour les fabricants et les entreprises.
Conception indépendante : aucune partie ne provient de pilotes, de firmware ni de documentation propriétaires.
Les écrans supplémentaires méritent mieux.
Pendant des années, ajouter un moniteur USB sous Linux a dépendu de logiciels fermés qui cassent à chaque mise à jour. Vitral part d’une autre idée : un protocole ouvert, documenté et mesuré, que chacun peut implémenter sur les appareils qu’il possède déjà. Sans boîte noire. Sans dépendre de personne.
Questions fréquentes.
Puis-je déjà utiliser ma tablette comme moniteur ?
Pas encore. Le cœur du protocole est terminé et mesuré ; l’application Android arrive à l’étape 3.
Faut-il une carte graphique ?
Non. Vitral fonctionne avec le seul processeur et utilisera le GPU s’il y en a un.
Fonctionne-t-il sous Windows ou macOS ?
Le récepteur de bureau fonctionne déjà sur les trois systèmes. L’émetteur commence par Linux.
Est-ce gratuit ?
Oui. Vitral est open source. Les entreprises qui en ont besoin peuvent obtenir des licences commerciales.
Construisons plus d’écrans.
Collaborations, fabricants, licences ou simple curiosité.
Soutenir le projet
Vitral est gratuit et ouvert. Votre soutien finance le matériel de test et le temps de développement.