Dotfiles_ArchAP/docs/screenshot-annotation.md

4.5 KiB

Capture annotée SwayFX V1

Print conserve la capture de zone rapide vers wl-copy image/png. Shift+Print conserve la capture plein écran rapide. Ctrl+Print lance screenshot-region --annotate : sélectionner une zone, puis annoter dans Swappy. Échap pendant la sélection annule avant grim ; fermer Swappy annule sans copie ni sauvegarde. Avant slurp, les panneaux QuickShell Clipboard, Applications et Overview ouverts sur la sortie focalisée sont fermés via leurs IPC, puis leur disparition est attendue. Aucun workspace ni fenêtre utilisateur n'est déplacé.

Swappy 1.8.0 fournit flèche, rectangle, texte, pinceau, annulation et rétablissement. Le panneau est ouvert au démarrage. Ctrl+C copie la version annotée en image/png avec l'action native de Swappy ; Ctrl+S enregistre. early_exit=true ferme l'éditeur après l'une de ces actions. Échap ou Ctrl+W ferment sans sauvegarde. Pour masquer une information sensible, utiliser un rectangle plein opaque (f pour remplir, transparence désactivée), puis vérifier le résultat. Le flou n'est pas une garantie d'effacement d'un secret.

La capture brute reste dans un répertoire privé 0700 propre à l'invocation sous XDG_RUNTIME_DIR. Aucun wl-copy ne reçoit l'image brute dans ce mode. Un verrou consultatif sur le répertoire runtime sérialise l'ouverture de Swappy, application GTK à instance unique, lorsque deux raccourcis arrivent presque ensemble ; il ne crée pas de fichier persistant. Swappy reçoit le PNG directement et son bouton Copier appelle wl-copy avec le type image/png. Les collecteurs cliphist restent inchangés ; une copie Wayland réussie ne garantit pas l'archivage d'un PNG de plus de 5 000 000 d'octets dans la version installée de cliphist.

Le bouton Enregistrer écrit d'abord dans un dossier privé de cette invocation. Après fermeture, le script vérifie le PNG et le publie sous un nom exclusif Screenshot-YYYYMMDD-HHMMSS-XXXXXXXX.png dans Screenshots du répertoire Images XDG. La configuration actuelle pointe vers ~/Pictures/Screenshots. Ce dossier n'est créé qu'après un enregistrement explicite. Le script nettoie ses seuls fichiers temporaires à la fermeture, à l'annulation, en erreur et sur interruption. auto_save=false et l'absence de --output-file sont essentiels : Swappy 1.8.0 écrit cette sortie même lors d'une fermeture.

Dépendances : Swappy 1.8.0 (sudo pacman -S swappy sur Arch), GTK3, Cairo, Pango, wl-clipboard, grim, jq, flock (util-linux), Python 3 et python-pillow. Le script utilise ~/.local/libexec/labfy-slurp et non /usr/bin/slurp ; le construire avec tools/build-slurp-keymap-guard si nécessaire. La règle de fenêtre cible exclusivement me.jtheoof.swappy, identifiant déclaré dans le code de Swappy 1.8.0. La bordure et les coins viennent de SwayFX ; le thème GTK courant n'est pas modifié.

Thème système

Le thème de Swappy suit la configuration GTK de la session, sans forcer un nom de thème ni une variante sombre. Le répertoire XDG_CONFIG_HOME temporaire reste propre à Swappy pour ses options d'annotation et de sauvegarde, mais ses sous-répertoires dconf et gtk-3.0 sont des liens symboliques vers la configuration utilisateur originale ($XDG_CONFIG_HOME, sinon $HOME/.config). Le thème, les icônes, la police et le CSS GTK restent ainsi ceux du système ; ils ne sont pas copiés dans un instantané figé.

La suppression du répertoire temporaire retire uniquement ces liens, pas les réglages utilisateur. Les chemins XDG avec espaces et l'absence de réglages GTK explicites sont pris en charge. Aucune valeur GTK_THEME n'est ajoutée : une éventuelle valeur déjà fournie par la session est conservée, comme pour les autres applications GTK.

Le diagnostic a reproduit un retour à Adwaita clair sans ces liens, puis retrouvé le même Catppuccin Mocha, les mêmes icônes et la même police que GTK lancé normalement. Les tests isolés couvrent deux thèmes factices successifs, un répertoire XDG personnalisé et la conservation des fichiers originaux.

Le test isolé python3 -B -m unittest tests/test_screenshot_annotation.py -v utilise une image synthétique et de faux exécutables. Une vérification graphique après installation de Swappy reste nécessaire : flèche, cadre, texte, annuler/rétablir, collage de la copie après fermeture, enregistrement explicite et fermeture sans enregistrement. Le test du presse-papiers réel ne doit être lancé qu'avec l'accord de l'utilisateur, car il remplace son contenu.