Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TutoClic

Générateur de tutoriels pas-à-pas libre pour Ubuntu GNOME. Tu effectues une procédure, TutoClic en fait un document illustré, annoté et exportable.

Équivalent libre de Folge, pour Linux, sans compte, sans serveur, sans télémétrie, et sans privilège élevé.

État : Phase 0. Aucune interface, aucun format de fichier figé, rien d'utilisable. Le dépôt contient les spécifications complètes et les premiers composants vérifiables. Voir SPEC.md §16 pour le découpage des phases.

Pourquoi c'est intéressant techniquement

Wayland interdit délibérément l'espionnage global des entrées. Un clone de Folge devrait donc être impossible : pas de détection de clic, pas d'auto-capture.

Trois contournements évidents ont été vérifiés et sont tous morts. Une extension GNOME Shell ne voit pas les clics des fenêtres clientes. AT-SPI ne livre pas d'événements souris sous Wayland. Le portail GlobalShortcuts n'est pas implémenté sur GNOME.

Le chemin qui reste n'a pas besoin des clics du tout. Le portail ScreenCast accepte cursor_mode = metadata, qui livre la position exacte du pointeur pour chaque frame en métadonnée PipeWire, sans aucun privilège. Il ne manque que l'instant de l'appui bouton, et pour un tutoriel ce n'est pas ce qu'on veut : on veut la frame où l'interface a répondu. Une détection de changement de frame donne ce signal-là, et gratuitement, puisque le flux est déjà reçu.

Position du curseur plus différence de frames égale auto-capture réelle, sans extension, sans helper privilégié, sans keylogger. Détail complet en SPEC.md §0.3 et §4.3.3, sources vérifiées en annexe A.

Contenu du dépôt

Chemin Rôle
SPEC.md spécifications complètes, sources vérifiées, questions ouvertes
docs/phase0-results.md ce que la sonde a réellement mesuré, machine par machine
crates/tutoclic-coords conversion entre les quatre repères de coordonnées (§4.5)
crates/tutoclic-probe sonde de la Phase 0 : type de tampon PipeWire et métadonnée de curseur

Construire et tester

Chaîne d'outils : Rust stable 1.86 ou plus. Ce plancher vient de l'arbre de dépendances (ashpd tire icu_* qui exige 1.86), pas du code de TutoClic : le code de tutoclic-coords compile dès 1.80.

cargo test -p tutoclic-coords

tutoclic-coords n'a aucune dépendance système. Il se compile et se teste sur n'importe quelle machine, sans bureau, sans GTK, sans PipeWire. C'est volontaire : SPEC.md §16 exige que la Phase 1a avance même si la Phase 0 révèle un problème.

La sonde, elle, a besoin de PipeWire et d'une session graphique :

sudo apt install build-essential pkg-config libpipewire-0.3-dev libclang-dev
cargo run -p tutoclic-probe

La sonde de la Phase 0

Elle répond aux deux questions qui décident de l'architecture, et à elles seules.

  1. Quel type de tampon PipeWire Mutter négocie-t-il ? MemFd ou MemPtr sont lisibles par le CPU et GStreamer reste hors des dépendances. DmaBuf vit sur le GPU et impose GStreamer ou un import EGL.
  2. SPA_META_Cursor arrive-t-il, et sur combien de frames ? Sans cette métadonnée, le mode automatique perd le repère de clic.

Elle ne capture rien, n'écrit aucune image, et ne conserve que le jeton de restauration du portail. Résultats mesurés dans docs/phase0-results.md.

La Phase 0 n'est pas franchie. La question du type de tampon est tranchée : MemFd sur une vraie session Wayland, donc GStreamer reste hors des dépendances. La question de la métadonnée de curseur est en revanche rouverte et c'est celle qui décide du produit : la première sonde ne demandait pas SPA_META_Cursor, donc son absence ne prouvait rien. La sonde corrigée n'a pas encore été exécutée.

Licence

GPL-3.0-or-later pour le code, CC BY-SA 4.0 pour la documentation. Toutes les dépendances doivent être libres et compatibles : inventaire et statut en annexe C de SPEC.md.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages