75 lines
4.5 KiB
Markdown
75 lines
4.5 KiB
Markdown
# 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.
|