À propos du projet
## Qu'est-ce que c'est
Snoop est un outil open source d'enregistrement de l'activité clavier/souris sur ordinateur de bureau, positionné comme « local-first » : toutes les données sont écrites dans un fichier SQLite local, et le README précise explicitement qu'aucune donnée n'est envoyée sur le réseau. Il prend en charge Windows 10/11 et macOS 10.15+. La marque appartient à Feedra, et la mascotte est un chat.
Son objectif est de répondre à quelques questions du quotidien : quelles applications occupent le plus de temps, quels moments de la journée sont les plus actifs, comment évolue la courbe d'intensité de l'activité clavier/souris, et quel écart existe entre le rythme hebdomadaire et la perception subjective.
## Limites de confidentialité (déclarées dans le README)
L'outil n'enregistre que la fréquence et l'intensité des entrées clavier/souris, et ne consigne pas :
- la séquence des valeurs de touches précises (les mots de passe, contenus de discussion et termes de recherche ne sont donc pas capturés)
- le presse-papiers, les captures d'écran, le microphone, la caméra
- tout contenu nécessitant un envoi sur le réseau
La granularité dans la base de données correspond à « telle application, durant tel intervalle de 5 secondes, a enregistré N frappes et un déplacement de souris de X pixels ». La heatmap du clavier repose sur un comptage désérialisé du nombre de pressions par touche, et selon le README, il est impossible de reconstruire le contenu saisi.
## Principaux modules fonctionnels
- **Vue d'ensemble / instantané du jour** : carte d'état de l'application courante et de l'intensité par palier, chiffres clés de la journée, classement des applications par durée d'utilisation, barre de chaleur d'intensité sur 24 heures.
- **Chronologie** : diagramme de Gantt en couloirs, une ligne par application, axe horizontal représentant le temps, blocs colorés selon une couleur fixe par application ; prise en charge du zoom à la molette, du déplacement par glisser-déposer, du changement de date ; les plages vides de plus de 2 heures sont compressées en blocs gris.
- **Heatmap du clavier** : rendu selon une disposition de clavier réelle, avec plusieurs agencements intégrés commutables (40/60/68/87/98/104, etc.) ; filtrage par application et par plage horaire ; les blocs clavier, souris et Top touches sont liés ; la coloration utilise des paliers par quantiles afin d'éviter que les touches très fréquentes (comme Entrée) n'écrasent les autres.
- **Analyses / rapport hebdomadaire** : histogramme de tendance sur une semaine, classement des applications avec variation par rapport à la période précédente, grille de chaleur 7×24 des rythmes de vie.
- **Autres** : présence dans la zone de notification, démarrage automatique à l'ouverture de session (désactivable), thèmes clair et sombre, liste d'applications ignorées, activation des remarques du chat et réglage de son niveau de mordant, export et effacement des données en un clic.
## Installation et exécution
Téléchargez le paquet d'installation correspondant à votre plateforme depuis les Releases :
- Windows : `Snoop_x.y.z_x64-setup.exe` ; en cas de blocage par SmartScreen, choisissez « Plus d'informations → Exécuter quand même ».
- macOS Apple Silicon : `Snoop_x.y.z_aarch64.dmg` ; macOS Intel : `Snoop_x.y.z_x64.dmg`.
- Sous macOS, la première exécution nécessite une autorisation dans « Réglages Système → Confidentialité et sécurité → Accessibilité » pour l'écoute globale du clavier et de la souris ; en cas de blocage initial par Gatekeeper, ouvrez l'application par clic droit.
La mise à jour automatique est intégrée : sous Windows, le téléchargement se fait en arrière-plan puis le menu de la zone de notification propose « Redémarrer pour installer » ; sous macOS, une page de téléchargement est proposée pour une installation manuelle par-dessus.
## Implémentation et performances
La pile technique est Tauri 2 + React 19 + TypeScript + Vite (frontend), Rust en backend, avec stockage via rusqlite, collecte via rdev/Raw Input, et le code spécifique à chaque plateforme isolé par `#[cfg]`. L'interface repose sur des composants maison et des variables CSS sémantiques pour un thème double clair/sombre.
Le README indique que l'écoute globale passe par les canaux natifs du système d'exploitation (Raw Input sous Windows, canal d'événements de bas niveau sous macOS), que les callbacks d'événements ne font que compter en mémoire et que les écritures en base sont regroupées toutes les 5 secondes, pour une utilisation CPU quotidienne inférieure à 1 %. La version Windows évite volontairement les low-level hooks afin de prévenir les conflits avec des mécanismes anti-triche tels qu'EAC ou Vanguard ; Snoop n'injecte pas de DLL, ne lit pas la mémoire d'autres processus et n'envoie pas d'entrées simulées.
Emplacement des données : sous Windows, `%APPDATA%\org.feedra.snoop\` ; sous macOS, `~/Library/Application Support/org.feedra.snoop/`.
## Compilation depuis les sources
Nécessite Node 22+, Rust stable et la chaîne d'outils de compilation propre à la plateforme. Le README rappelle que Vite 7 exige Node 20.19+/22.12+ ; avec Node 18, l'erreur `crypto.hash is not a function` empêche le démarrage du serveur de développement.
```bash
npm ci
npm run tauri dev # mode développement
npm run tauri build # génération du paquet d'installation
```
La compilation sous Windows nécessite Visual Studio Build Tools (charge de travail Développement Desktop en C++), et sous macOS les Xcode Command Line Tools. Le processus d'empaquetage et de publication est décrit dans `docs/打包与发布.md` du dépôt.
## Limitations connues et licence
Linux n'est pas encore pris en charge ; le README précise que ce n'est pas un objectif de publication actuel. La synchronisation vers un téléphone ou le cloud n'est pas prise en charge, ce que l'auteur présente comme un choix de conception.
La marque et les droits d'auteur appartiennent à Feedra (© 2026). Le code est open source, mais le README demande de ne pas utiliser la marque « Snoop » ni la mascotte pour des produits similaires. Les termes de licence officiels ne sont pas encore fixés ; le fichier `LICENSE` reste à compléter.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.