desktop-theme : moteur de bascule sûr, diagnostics et rollback #4

Closed
opened 2026-10-24 23:54:42 +00:00 by mathieu · 3 comments
Owner

Racine : mathieu/dotfiles#25

Travail

Implémenter la commande Python 3.11+ standard-library dans ~/Projets/bin.

Contrat : profils fournis par dotfiles ; list, set NOM [--dry-run], status, rollback. Génération validée avant application, verrou, sauvegardes, écritures atomiques par fichier, préservation des liens et des clés non gérées, absence de réseau pendant set, refus des dérives gérées. Reloads bornés et bilan distinguant appliqué/reload requis/indisponible/échec. Tests isolés avec HOME/XDG temporaires : erreurs, conflits, idempotence, restauration et partialité. Ne pas toucher aux scripts ou liens non liés au chantier.

  • with pi 🥧
Racine : https://git.2027a.net/mathieu/dotfiles/issues/25 ## Travail Implémenter la commande Python 3.11+ standard-library dans `~/Projets/bin`. Contrat : profils fournis par dotfiles ; `list`, `set NOM [--dry-run]`, `status`, `rollback`. Génération validée avant application, verrou, sauvegardes, écritures atomiques par fichier, préservation des liens et des clés non gérées, absence de réseau pendant `set`, refus des dérives gérées. Reloads bornés et bilan distinguant appliqué/reload requis/indisponible/échec. Tests isolés avec HOME/XDG temporaires : erreurs, conflits, idempotence, restauration et partialité. Ne pas toucher aux scripts ou liens non liés au chantier. - with pi 🥧
Author
Owner

Avancement

  • Les profils et 20 fragments ont été exercés dans un HOME temporaire avec les vrais ports natifs préparés ; aller-retour Nord → Dracula → Mocha → rollback → Nord réussi, sans appel aux services personnels.

  • Tests moteur : 40 cas ; préparation : 13 cas. Les tests ciblés Quickshell/Neovim et la génération passent.

  • Revue indépendante : corrections appliquées pour l’isolation D-Bus, les racines/symlinks, les transactions interrompues, le statut après rollback, les pidfds et la vérification des ressources. Une relecture ciblée reste à faire avant intégration.

  • Une première version d’un test avait modifié GTK ; le réglage observé Nordic-darker a été rétabli et revérifié, et les fixtures interdisent maintenant tout appel non simulé aux stores personnels.

  • Rofi -rasi-validate segfault aussi dans le contexte de validation actuel ; ce résultat n’est pas compté comme une réussite. Le contrôle du lancement normal et la validation du bureau actif restent à terminer.

  • Aucun déploiement du moteur dans le PATH ni bascule finale de la session pour l’instant.

  • with pi 🥧

## Avancement - Les profils et 20 fragments ont été exercés dans un HOME temporaire avec les vrais ports natifs préparés ; aller-retour Nord → Dracula → Mocha → rollback → Nord réussi, sans appel aux services personnels. - Tests moteur : 40 cas ; préparation : 13 cas. Les tests ciblés Quickshell/Neovim et la génération passent. - Revue indépendante : corrections appliquées pour l’isolation D-Bus, les racines/symlinks, les transactions interrompues, le statut après rollback, les pidfds et la vérification des ressources. Une relecture ciblée reste à faire avant intégration. - Une première version d’un test avait modifié GTK ; le réglage observé Nordic-darker a été rétabli et revérifié, et les fixtures interdisent maintenant tout appel non simulé aux stores personnels. - Rofi `-rasi-validate` segfault aussi dans le contexte de validation actuel ; ce résultat n’est pas compté comme une réussite. Le contrôle du lancement normal et la validation du bureau actif restent à terminer. - Aucun déploiement du moteur dans le PATH ni bascule finale de la session pour l’instant. - with pi 🥧
Author
Owner

Résultat intégré et vérifié

  • Commande opérationnelle dans ~/.local/bin/desktop-theme : profils Nord, Dracula et Catppuccin Mocha ; set, status, --dry-run, rollback, reprise recover et préparation explicite séparée.
  • Sources signées et intégrées dans les deux main ; contenu distant contrôlé après push. Les modifications concurrentes de mémoire, accents et position des notifications sont conservées.
  • 70 tests outil/préparation/intégrations natives réussis : 45 moteur, 23 ressources, 1 rendu btop réel (3 profils), 1 enregistrement Code OSS isolé. Ruff et contrôles Python disponibles passent ; le LSP QML n'est pas disponible, les composants sont exercés dans le vrai runtime Qt.
  • Génération/contrats 9 tests, Pi 11, Neovim 5 ; suites UI/notifications/audio/presse-papiers et rechargement mémoire, tests Lua Hyprland et JavaScript concernés exécutés. Un diagnostic intermittent hors génération est suivi séparément en mathieu/dotfiles#29 : trois reprises ciblées et la suite complète suivante passent.
  • Essai réel Dracula → Mocha → rollback Dracula → rollback Nord : singleton actif Quickshell, bordures Hyprland/tmux et sélection GTK vérifiés ; PID Quickshell inchangé. Nord est conservé.
  • Ports GTK3 et Qt rendus hors écran ; plugins Neovim natifs chargés ; Yazi/btop rendus sur terminal privé. Code OSS reconnaît les deux extensions inertes dans son profil par défaut ; trois identifiants préexistants conservés et préférences conformes à l'instantané préalable. Son installateur réécrit des métadonnées de registre : aucune identité octet-par-octet de ces objets n'est revendiquée.
  • Les six feuilles GTK4 Nord/Dracula/Mocha sont chargées sans diagnostic après la correction bornée mathieu/dotfiles#30. Pour Dracula, les CSS effectifs parsés avant/après correction sont identiques ; seule la déclaration déjà ignorée est retirée, avec empreintes d'entrée/sortie.
  • Tests CSS Proton sur pages synthétiques : couleurs calculées des trois profils et résistance à une feuille tardive ; aucune donnée de message/calendrier utilisée.

Limites assumées / activation

status ne confond pas configuration et pixels affichés. Pi/éditeurs et certaines fenêtres GTK/Qt peuvent nécessiter un reload/reopen ; Proton demande une migration initiale normale et un rechargement de son extension/pages (désactiver l'ancien Proton Nord s'il reste actif). Aucun navigateur/éditeur n'est fermé automatiquement. GTK4/libadwaita peut imposer ses propres règles ; Ghostty est configuré mais absent du PATH, Dunst reste un backend secondaire manuel. Les configurations historiques non raccordées ne sont pas présentées comme actives.

Préparation hors ligne vérifiée après installation ; les changements ordinaires n'écrivent pas dans Git. iq-air.sh et les liens/fichiers préexistants de Projets/bin sont préservés. Les premiers défauts trouvés en revue ont été corrigés et les tests concernés réexécutés. Le mode Rofi -rasi-validate reste un défaut du validateur, séparé en mathieu/dotfiles#28 ; le lancement normal testé passe.

Révisions main : mathieu/dotfiles@0bfd5a839776ceadf79c2aca2f05eb746be36380, mathieu/duct-tape@f6c5aa49a17b4e47cf63391d0cca84e4e190a942

  • with pi 🥧
## Résultat intégré et vérifié - Commande opérationnelle dans `~/.local/bin/desktop-theme` : profils Nord, Dracula et Catppuccin Mocha ; `set`, `status`, `--dry-run`, `rollback`, reprise `recover` et préparation explicite séparée. - Sources signées et intégrées dans les deux `main` ; contenu distant contrôlé après push. Les modifications concurrentes de mémoire, accents et position des notifications sont conservées. - 70 tests outil/préparation/intégrations natives réussis : 45 moteur, 23 ressources, 1 rendu btop réel (3 profils), 1 enregistrement Code OSS isolé. Ruff et contrôles Python disponibles passent ; le LSP QML n'est pas disponible, les composants sont exercés dans le vrai runtime Qt. - Génération/contrats 9 tests, Pi 11, Neovim 5 ; suites UI/notifications/audio/presse-papiers et rechargement mémoire, tests Lua Hyprland et JavaScript concernés exécutés. Un diagnostic intermittent hors génération est suivi séparément en mathieu/dotfiles#29 : trois reprises ciblées et la suite complète suivante passent. - Essai réel Dracula → Mocha → rollback Dracula → rollback Nord : singleton actif Quickshell, bordures Hyprland/tmux et sélection GTK vérifiés ; PID Quickshell inchangé. Nord est conservé. - Ports GTK3 et Qt rendus hors écran ; plugins Neovim natifs chargés ; Yazi/btop rendus sur terminal privé. Code OSS reconnaît les deux extensions inertes dans son profil par défaut ; trois identifiants préexistants conservés et préférences conformes à l'instantané préalable. Son installateur réécrit des métadonnées de registre : aucune identité octet-par-octet de ces objets n'est revendiquée. - Les six feuilles GTK4 Nord/Dracula/Mocha sont chargées sans diagnostic après la correction bornée mathieu/dotfiles#30. Pour Dracula, les CSS effectifs parsés avant/après correction sont identiques ; seule la déclaration déjà ignorée est retirée, avec empreintes d'entrée/sortie. - Tests CSS Proton sur pages synthétiques : couleurs calculées des trois profils et résistance à une feuille tardive ; aucune donnée de message/calendrier utilisée. ## Limites assumées / activation `status` ne confond pas configuration et pixels affichés. Pi/éditeurs et certaines fenêtres GTK/Qt peuvent nécessiter un reload/reopen ; Proton demande une migration initiale normale et un rechargement de son extension/pages (désactiver l'ancien Proton Nord s'il reste actif). Aucun navigateur/éditeur n'est fermé automatiquement. GTK4/libadwaita peut imposer ses propres règles ; Ghostty est configuré mais absent du PATH, Dunst reste un backend secondaire manuel. Les configurations historiques non raccordées ne sont pas présentées comme actives. Préparation hors ligne vérifiée après installation ; les changements ordinaires n'écrivent pas dans Git. `iq-air.sh` et les liens/fichiers préexistants de `Projets/bin` sont préservés. Les premiers défauts trouvés en revue ont été corrigés et les tests concernés réexécutés. Le mode Rofi `-rasi-validate` reste un défaut du validateur, séparé en mathieu/dotfiles#28 ; le lancement normal testé passe. Révisions main : `mathieu/dotfiles@0bfd5a839776ceadf79c2aca2f05eb746be36380`, `mathieu/duct-tape@f6c5aa49a17b4e47cf63391d0cca84e4e190a942` - with pi 🥧
Author
Owner

Évolution demandée : priorité au thème explicitement choisi

Intégré sur main : 7375bbb5b744ed9af49460542195d5cccbfe0686. À la demande de Mathieu, set/install réappliquent désormais les clés de thème même si une application ou une édition manuelle les a changées depuis la dernière bascule. Aucun flag de force ni confirmation supplémentaire ; sélectionner à nouveau le même profil répare aussi ces valeurs.

Les autres réglages restent conservés. Le journal sauvegarde les vraies valeurs et les fichiers précédant la bascule. Les contrôles de liens/fichiers générés, les écritures concurrentes et les protections propres à rollback/recover restent en place. status peut signaler une préférence divergente mais n'empêche plus de réappliquer un thème.

Validation : 75 tests passent (50 moteur, 23 ressources, 1 Code OSS isolé, 1 btop natif couvrant trois palettes et un retour à Default entre bascules), Ruff passe. Revue de code indépendante OK ; les tests ont été exécutés par le parent. Couverture des valeurs GTK/Code/btop, réparation du même profil, simulation sans écriture, snapshot GSettings simulé et restauration des valeurs réellement présentes avant la commande.

Essai personnel : le btop Default signalé par Mathieu n'a plus bloqué set catppuccin-mocha. Sauvegarde complète vérifiée ; tous ses autres réglages sont octet-identiques. Configuration sans dérive, singleton Quickshell observé en Mocha #1E1E2E, parseur natif Kitty sans erreur et même fond. Aucun processus btop arrêté ni touche injectée ; une instance déjà ouverte peut toujours demander un rechargement normal pour afficher la nouvelle palette.

Fichiers distants vérifiés après push. iq-air.sh et les fichiers étrangers sont préservés. Documentation de commande et TODO local mis à jour.

  • with pi 🥧
## Évolution demandée : priorité au thème explicitement choisi Intégré sur `main` : `7375bbb5b744ed9af49460542195d5cccbfe0686`. À la demande de Mathieu, `set`/`install` réappliquent désormais les clés de thème même si une application ou une édition manuelle les a changées depuis la dernière bascule. Aucun flag de force ni confirmation supplémentaire ; sélectionner à nouveau le même profil répare aussi ces valeurs. Les autres réglages restent conservés. Le journal sauvegarde les vraies valeurs et les fichiers précédant la bascule. Les contrôles de liens/fichiers générés, les écritures concurrentes et les protections propres à rollback/recover restent en place. `status` peut signaler une préférence divergente mais n'empêche plus de réappliquer un thème. Validation : **75 tests passent** (50 moteur, 23 ressources, 1 Code OSS isolé, 1 btop natif couvrant trois palettes et un retour à Default entre bascules), Ruff passe. Revue de code indépendante OK ; les tests ont été exécutés par le parent. Couverture des valeurs GTK/Code/btop, réparation du même profil, simulation sans écriture, snapshot GSettings simulé et restauration des valeurs réellement présentes avant la commande. Essai personnel : le btop `Default` signalé par Mathieu n'a plus bloqué `set catppuccin-mocha`. Sauvegarde complète vérifiée ; tous ses autres réglages sont octet-identiques. Configuration sans dérive, singleton Quickshell observé en Mocha `#1E1E2E`, parseur natif Kitty sans erreur et même fond. Aucun processus btop arrêté ni touche injectée ; une instance déjà ouverte peut toujours demander un rechargement normal pour afficher la nouvelle palette. Fichiers distants vérifiés après push. `iq-air.sh` et les fichiers étrangers sont préservés. Documentation de commande et TODO local mis à jour. - with pi 🥧
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mathieu/duct-tape#4
No description provided.