En développement · étape 1 sur 6 terminée

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
Essayer la démo
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.

01Démo interactive

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.

1920 × 1080 · 60 fps

Faites glisser la fenêtre à la souris ou au doigt

Écran plat 0 B par image 0 B cumulé
Vitral 0 B par image 0 B cumulé
—

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.

02Récepteurs

Ce que vous possédez déjà, comme moniteur.

Récepteur de bureau pour Linux, Windows et macOS, via le réseau.

03Pour les développeurs

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.

emetteur.rs
// 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)?;
}
terminal
$ 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.
04Fonctionnement

Décrivez chaque écran en calques et n’envoyez que ce qui change.

  1. 01

    Calques

    L’émetteur décrit chaque écran comme une pile de calques : fond, fenêtres, vidéo et curseur.

  2. 02

    Cache

    Le récepteur conserve chaque calque. Ce qu’il possède déjà ne voyage plus jamais.

  3. 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.

  4. 04

    Images atomiques

    L’image n’est composée qu’à la validation, jamais à moitié. Le curseur passe toujours en premier.

05Feuille de route

Six étapes, chacune mesurée.

  1. 01 Terminée

    Cœur du protocole

    Spécification v0, moteur, récepteur, benchmark et tests.

  2. 02 Suivante

    Applications réelles

    Compositeur Wayland imbriqué : chaque vraie fenêtre est un calque.

  3. 03 Prévue

    Récepteur Android

    Application avec composition matérielle, USB, tactile et stylet.

  4. 04 Prévue

    Cartes en USB

    Récepteur Raspberry Pi avec sortie HDMI directe.

  5. 05 Prévue

    Pilote Linux

    Les écrans Vitral apparaissent comme de vrais moniteurs.

  6. 06 Prévue

    Calques vidéo

    Encodage matériel et vidéo d’origine sans recompression.

06Open source

Ouvert par conception.

Vitral utilise une licence différente pour chaque partie, selon son rôle.

ComposantLicencePourquoi
Spécification et documentationCC-BY-4.0Tout le monde peut implémenter le protocole.
Bibliothèques du protocole et du récepteurMIT ou Apache-2.0D’autres projets et appareils peuvent les intégrer librement.
Moteur et applicationsGPL-3.0Les améliorations des applications restent ouvertes.
Pilote noyauGPL-2.0Exigé 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.

07Pourquoi

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.

08Questions

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.

09Contact

Construisons plus d’écrans.

Collaborations, fabricants, licences ou simple curiosité.