Que fait cli-anything-inkscape ?
Une interface en ligne de commande avec état pour l'édition graphique vectorielle, suivant le même modèle que les CLI GIMP et Blender. Manipule directement des documents SVG (XML) avec un format de projet JSON pour le suivi d'état.
Installation
Ce CLI est installé dans le cadre du package cli-anything-inkscape :
pip install cli-anything-inkscape
Prérequis :
- Python 3.10+
- Inkscape doit être installé sur votre système
Utilisation
Commandes de base
# Afficher l'aide
cli-anything-inkscape --help
# Démarrer le mode REPL interactif
cli-anything-inkscape
# Créer un nouveau document
cli-anything-inkscape document new -o project.json
# Exécuter avec sortie JSON (pour consommation par un agent)
cli-anything-inkscape --json document info -p project.json
Mode REPL
Lorsqu'il est invoqué sans sous-commande, le CLI entre dans une session REPL interactive :
cli-anything-inkscape
# Saisissez les commandes de manière interactive avec complétion par tabulation et historique
Vous pouvez également démarrer le REPL avec un chemin de projet inexistant. Le CLI crée alors un nouveau document en mémoire au lieu d'échouer immédiatement :
cli-anything-inkscape --project /abs/path/new-title.inkscape-cli.json
Groupes de commandes
Document
Commandes de gestion de documents.
| Commande | Description |
|---|---|
new | Créer un nouveau document |
open | Ouvrir un projet existant |
save | Sauvegarder le projet actuel |
info | Afficher les informations du document |
profiles | Lister les profils de documents disponibles |
canvas-size | Définir la taille du canevas |
units | Définir les unités du document |
json | Afficher le JSON brut du projet |
Forme (Shape)
Commandes de gestion des formes.
| Commande | Description |
|---|---|
add-rect | Ajouter un rectangle |
add-circle | Ajouter un cercle |
add-ellipse | Ajouter une ellipse |
add-line | Ajouter une ligne |
add-polygon | Ajouter un polygone |
add-path | Ajouter un chemin |
add-star | Ajouter une étoile |
remove | Supprimer une forme par son index |
duplicate | Dupliquer une forme |
list | Lister toutes les formes/objets |
get | Obtenir des informations détaillées sur une forme |
Texte
Commandes de gestion du texte.
| Commande | Description |
|---|---|
add | Ajouter un élément de texte ; prend en charge --box-width, --box-height et --line-height pour les mises en page avec retour à la ligne |
set | Définir une propriété de texte (texte, font-family, font-size, fill, box-width, box-height, line-height, etc.) |
list | Lister tous les objets texte |
Style
Commandes de gestion du style.
| Commande | Description |
|---|---|
set-fill | Définir la couleur de remplissage d'un objet |
set-stroke | Définir la couleur (et éventuellement l'épaisseur) du contour d'un objet |
set-opacity | Définir l'opacité d'un objet (0.0-1.0) |
set | Définir une propriété de style arbitraire sur un objet |
get | Obtenir les propriétés de style d'un objet |
list-properties | Lister toutes les propriétés de style disponibles |
Transformation
Opérations de transformation (translation, rotation, échelle, inclinaison).
| Commande | Description |
|---|---|
translate | Translater (déplacer) un objet |
rotate | Faire pivoter un objet |
scale | Mettre à l'échelle un objet |
skew-x | Incliner un objet horizontalement |
skew-y | Incliner un objet verticalement |
get | Obtenir la transformation actuelle d'un objet |
clear | Supprimer toutes les transformations d'un objet |
Calque (Layer)
Commandes de gestion des calques.
| Commande | Description |
|---|---|
add | Ajouter un nouveau calque |
remove | Supprimer un calque par son index |
move-object | Déplacer un objet vers un autre calque |
set | Définir une propriété de calque (nom, visible, verrouillé, opacité) |
list | Lister tous les calques |
reorder | Déplacer un calque d'une position à une autre |
get | Obtenir des informations détaillées sur un calque |
Groupe de chemins (Path)
Opérations booléennes sur les chemins.
| Commande | Description |
|---|---|
union | Union de deux objets |
intersection | Intersection de deux objets |
difference | Différence de deux objets (A moins B) |
exclusion | Exclusion (XOR) de deux objets |
convert | Convertir une forme en chemin |
list-operations | Lister les opérations booléennes sur les chemins disponibles |
Dégradé (Gradient)
Commandes de gestion des dégradés.
| Commande | Description |
|---|---|
add-linear | Ajouter un dégradé linéaire |
add-radial | Ajouter un dégradé radial |
apply | Appliquer un dégradé à un objet |
list | Lister tous les dégradés |
Groupe d'exportation (Export)
Commandes d'exportation/rendu.
| Commande | Description |
|---|---|
png | Rendre le document en PNG |
svg | Exporter le document en SVG |
pdf | Exporter le document en PDF (nécessite Inkscape) |
presets | Lister les préréglages d'exportation |
Session
Commandes de gestion de session.
| Commande | Description |
|---|---|
status | Afficher l'état de la session |
undo | Annuler la dernière opération |
redo | Rétablir la dernière opération annulée |
history | Afficher l'historique des annulations |
Exemples
Créer un nouveau projet
Créez un nouveau fichier de projet inkscape.
cli-anything-inkscape document new -o monprojet.json
# Ou avec sortie JSON pour une utilisation programmatique
cli-anything-inkscape --json document new -o monprojet.json
Session REPL interactive
Démarrez une session interactive avec prise en charge de l'annulation/répétition.
cli-anything-inkscape
# Saisissez les commandes de manière interactive
# Utilisez 'help' pour voir les commandes disponibles
# Utilisez 'undo' et 'redo' pour naviguer dans l'historique
Exporter le projet
Exportez le projet vers un format de sortie final.
cli-anything-inkscape --project monprojet.json export pdf sortie.pdf --overwrite
Mise en page de texte avec retour à la ligne
Pour les cartes de titre, les étiquettes et les panneaux adaptés au portrait, privilégiez les boîtes de texte avec retour à la ligne plutôt que l'insertion manuelle de sauts de ligne :
cli-anything-inkscape --project titre.json text add \
--text "Capture réelle + Veo cold open + Gemini score + plaque miniature" \
--x 180 --y 470 --font-size 118 \
--box-width 1180 --box-height 260 --line-height 1.05
cli-anything-inkscape --project titre.json text set 0 box-width 980
cli-anything-inkscape --project titre.json text set 0 line-height 1.15
Notes :
box-widthpermet d'enrouler le texte long en plusieurs lignestspanSVG exportées.box-heightpermet au texte long d'échouer en toute sécurité plutôt que de sortir du canevas.- Utilisez des boîtes de texte avec retour à la ligne pour les graphiques à texte long avant de recourir à des sauts de ligne manuels.
Gestion d'état
Le CLI maintient l'état de la session avec :
- Annulation/Répétition : Jusqu'à 50 niveaux d'historique
- Persistance du projet : Sauvegarder/charger l'état du projet au format JSON
- Suivi de session : Suivre les modifications et changements
Formats de sortie
Toutes les commandes prennent en charge deux modes de sortie :
- Lisible par l'humain (par défaut) : Tableaux, couleurs, texte formaté
- Lisible par machine (drapeau
--json) : JSON structuré pour la consommation par un agent
# Sortie humaine
cli-anything-inkscape project info -p project.json
# Sortie JSON pour les agents
cli-anything-inkscape --json project info -p project.json
Pour les agents IA
Lorsque vous utilisez ce CLI de manière programmatique :
- Utilisez toujours le drapeau
--jsonpour une sortie analysable - Vérifiez les codes de retour - 0 pour succès, non nul pour erreurs
- Analysez stderr pour les messages d'erreur en cas d'échec
- Utilisez des chemins absolus pour toutes les opérations sur fichiers
- Vérifiez que les sorties existent après les opérations d'exportation
- Privilégiez les boîtes de texte avec retour à la ligne pour les titres et le texte de longueur variable afin que les mises en page restent stables entre les modifications
Plus d'informations
- Documentation complète : Voir README.md dans le package
- Couverture de test : Voir TEST.md dans le package
- Méthodologie : Voir HARNESS.md dans le cli-anything-plugin
Version
1.0.1