Quickshell / notifications : vérifier le panneau redémarré avant de confirmer le retour à Dunst #17

Closed
opened 2026-10-24 13:10:05 +00:00 by mathieu · 1 comment
Owner

Problème confirmé

Lors de la désactivation, mathieu/notification-backend.py:209–219 confirme uniquement que Dunst possède le nom D-Bus attendu. Il ne vérifie ni la survie ni la disponibilité IPC du panneau Quickshell qui vient d’être redémarré.

Reproduction avec FakeBackend : simuler un nouveau panneau dont poll() vaut 1 et un Dunst propriétaire du nom ; switch(False) retourne pourtant {"ok": true, "backend": "dunst"}. Aucun service réel n’a été redémarré pour ce test.

Résultat attendu

La bascule est réussie seulement si le serveur attendu fonctionne et si le nouveau PID de panneau est vivant et répond à l’IPC compatible, dans une attente bornée. Ne pas accepter la réponse d’un ancien PID. En cas d’échec, signaler l’état réel et appliquer le rollback existant sans créer de doublon.

Validation

  • Nouveau panneau mort au démarrage, vivant mais IPC indisponible, mauvais PID : pas de succès.
  • Panneau prêt et Dunst propriétaire : succès.
  • Échec ou rollback partiel explicitement visible ; préserver règles et activation modifiée en parallèle.
  • Compléter test-notification-backend.py avec services et fichiers privés simulés ; ne pas arrêter la session personnelle.

Le cycle de vie global des services graphiques est suivi dans #6, mais n’est pas un prérequis de ce correctif local.

Référence

Revue du code au commit 5e350a8, avec Quickshell 0.3.2. Les 18 suites existantes passent ; les cas ci-dessous complètent cette couverture. Chantier : #11.

  • with pi 🥧
## Problème confirmé Lors de la désactivation, `mathieu/notification-backend.py:209–219` confirme uniquement que Dunst possède le nom D-Bus attendu. Il ne vérifie ni la survie ni la disponibilité IPC du panneau Quickshell qui vient d’être redémarré. Reproduction avec `FakeBackend` : simuler un nouveau panneau dont `poll()` vaut 1 et un Dunst propriétaire du nom ; `switch(False)` retourne pourtant `{"ok": true, "backend": "dunst"}`. Aucun service réel n’a été redémarré pour ce test. ## Résultat attendu La bascule est réussie seulement si le serveur attendu fonctionne **et** si le nouveau PID de panneau est vivant et répond à l’IPC compatible, dans une attente bornée. Ne pas accepter la réponse d’un ancien PID. En cas d’échec, signaler l’état réel et appliquer le rollback existant sans créer de doublon. ## Validation - [x] Nouveau panneau mort au démarrage, vivant mais IPC indisponible, mauvais PID : pas de succès. - [x] Panneau prêt et Dunst propriétaire : succès. - [x] Échec ou rollback partiel explicitement visible ; préserver règles et activation modifiée en parallèle. - [x] Compléter `test-notification-backend.py` avec services et fichiers privés simulés ; ne pas arrêter la session personnelle. Le cycle de vie global des services graphiques est suivi dans #6, mais n’est pas un prérequis de ce correctif local. ## Référence Revue du code [au commit `5e350a8`](https://git.2027a.net/mathieu/dotfiles/src/commit/5e350a8945af99e6e6b1c7f472fb7529a26a1826/quickshell/), avec Quickshell 0.3.2. Les 18 suites existantes passent ; les cas ci-dessous complètent cette couverture. Chantier : #11. - with pi 🥧
Author
Owner

Corrigé et intégré sur main, contenu distant vérifié au commit e8ec9ad.

Commitf9cb49f ; 26 tests backend, PID/IPC/serveur/propriétaire attendus, budget partagé et rollback vérifié ; revue propre.

Gate parent de composition : 20/20 suites passent, HOME/XDG/bus/audio privés. Commits signés et vérifiés contre la clé publique configurée avec confiance temporaire locale. Aucun service personnel, appareil HA, presse-papiers ou vrai partage piloté. Le portail natif/compositeur n’est pas revendiqué testé.

Publication du code seulement : checkout actif à 5e350a8, sans activation/reload.

  • with pi 🥧
Corrigé et intégré sur `main`, contenu distant vérifié au commit [e8ec9ad](https://git.2027a.net/mathieu/dotfiles/commit/e8ec9ad7563960637ef33c13f0a1431f6bfab132). Commitf9cb49f ; 26 tests backend, PID/IPC/serveur/propriétaire attendus, budget partagé et rollback vérifié ; revue propre. Gate parent de composition : **20/20 suites passent**, HOME/XDG/bus/audio privés. Commits signés et vérifiés contre la clé publique configurée avec confiance temporaire locale. Aucun service personnel, appareil HA, presse-papiers ou vrai partage piloté. Le portail natif/compositeur n’est pas revendiqué testé. Publication du code seulement : checkout actif à `5e350a8`, sans activation/reload. - with pi 🥧
mathieu 2026-10-24 13:44:02 +00:00
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/dotfiles#17
No description provided.