Fond d'écran personnalisé
Le bureau ne dessine un fond de mod que sous forme de scene que le mod rend lui-même, et ne dessine aucune image matricielle à l'intérieur.
Ainsi, l'image est tracée en chemins vectoriels, compressée sous des limites de taille strictes et silencieuses, et dessinée par un petit mod.
Lisez references/limits.md avant de modifier quoi que ce soit dans la manière dont le mod dessine ; il répertorie ce qui a été mesuré et ce qui échoue silencieusement.
Flux de travail
- Récupérez les images. Une image, ou une version claire (jour) et une sombre (nuit). Un format paysage d'environ 1600x1000 convient ; l'application rogne avec
xMidYMid slice, donc gardez le sujet loin du haut et du bas. Les œuvres picturales et douces se tracent beaucoup mieux par caractère que les dessins animés avec contours ; les photos fonctionnent aussi. Si l'utilisateur génère l'art, dites-le avant qu'il ne le fasse. - Installez les outils dans des dossiers temporaires (pas dans le mod) :
python -m pip install --target "$TMP/pb-vtracer" vtracer mkdir -p "$TMP/pb-svgo" && cd "$TMP/pb-svgo" && npm init -y >/dev/null && npm install svgo@4 - Créez le dossier du mod dans
~/.claude/skills/<id>/(chargé à chaque session) : copiez assets/mod-template/, puis copiezmake-colors.jsetmake-colors.d.tsdepuis la compétence de création de plugin dans son dossierhooks/, sans les modifier. Remplissez chaque__PLACEHOLDER__(__ID__est le nom du dossier, en minuscules avec des traits d'union). Pour une seule image, supprimez l'autre import, sa scène et son apparence, et faites pointerautovers l'unique image. - Examinez l'image et listez ses régions (recadrez et affichez-les) : le sujet, le visage, les zones de peau, chaque côté. Écrivez une configuration par image à côté du mod (pas dans
hooks/), en utilisant references/tracing.md pour les choix et paramètres de régions, et assets/example-night.json (une fille assise à droite d'une entrée) comme modèle. Pour une paire, donnez à chaque configuration"scheme"et les deux budgets :{"FULL": 259500, "HALF": 129500}; pour une seule image, seulementFULLet pas descheme. - Tracez, en arrière-plan (un tracé prend quelques minutes) :
Il trace chaque région à chaque option une fois, s'adapte à chaque budget (d'abord toutes les régions, puis les détails par priorité), et écritpython -I scripts/trace_scene.py night.json --vtracer "$TMP/pb-vtracer" --svgo "$TMP/pb-svgo" --preview "$TMP/pb-preview/night.html"scene-<nom>.ts. Faites pointer leoutde la configuration vers le dossierhooks/du mod. - Prévisualisez le HTML dans le volet du navigateur (servez son dossier avec
python -m http.server). Vérifiez le sujet à un zoom de 2x, car l'application agrandit l'image. Corrigez ce qui ne va pas à l'aide du tableau dans tracing.md et retracez. - Couleurs. Échantillonnez les couleurs de surface des images (la teinte dominante du mur ou du ciel ; le mode sombre reste sombre) et exécutez
makeColors; sa liste de problèmes ne doit contenir aucune entrée "Desktop won't paint". - Validez et remettez :
claude plugin validate <dossier du mod>. Dites à l'utilisateur de recharger la fenêtre ou de démarrer une nouvelle session, de taper n'importe quel message (le thème est défini à la première invite), et d'essayer/backdrop day|night|auto. Demandez-lui de regarder des zones spécifiques ; sa capture d'écran est le véritable test. Supprimez les dossiers d'outils temporaires après.
Règles impératives
- SVG entre simples quotes uniquement, pas de
",\ni d'accent grave dans aucun SVG : l'échappement compte dans le total. - Les SVG d'une scène ensemble ≤ ~259500 caractères ; chaque SVG ≤ ~98000. Au-delà, le bureau n'affiche rien et ne dit rien ; le modèle journalise les scènes trop grandes au démarrage de la session.
- Gardez
glassactivé ; laisseztintde côté pour une apparence destinée aux deux modes. - N'utilisez pas les fonds
image,color,gradientouvector,<image>, ouoverrideColorScheme: aucun ne dessine ou ne prend effet. - Définissez le thème à
prompt.submit, pas àsession.start. - En améliorant une zone, conservez ce que l'utilisateur a dit apprécier : donnez à cette zone sa propre région ou priorité plutôt que de tout reparamétrer. Signalez chaque changement avec la zone qu'il affecte.