feat(inject): choose paste shortcuts by application class #86

Merged
silex merged 1 commit from feat/application-paste-rules into main 2026-10-11 03:37:58 +00:00
Owner

Objectif

Rendre le collage utilisable dans les champs GTK/Qt et les navigateurs, tout en conservant Ctrl+Maj+V dans les terminaux configurés.

Implémentation

  • Ctrl+V devient le défaut compilé; une liste paste_shortcuts explicitement configurée reste inchangée.
  • [[sink.paste_rules]] associe une classe de fenêtre Hyprland exacte (sans distinction de casse) à un raccourci autorisé; première correspondance prioritaire, sinon premier raccourci par défaut.
  • Règles bornées et validées avant capture, backend Hyprland requis; aucune regex ni métadonnée de fenêtre insérée dans le code Lua.
  • Une seule émission ciblée par adresse; adresse et classe revérifiées avant dispatch, sans repli après échec ou résultat ambigu.
  • type, paste+none, listes vides et --clipboard-only restent sans lecture Hyprland.
  • Documentation, exemple et tests de priorité, validation, confidentialité et absence de seconde tentative.

Vérifications locales

  • make lint test module-check installcheck GO_TEST_FLAGS='-race -count=1' : succès. Aucune CI distante : Actions reste désactivé, conformément au choix de Mathieu.
  • Chemin Go réel sink.New → Deliver : GTK 3/4 Entry et TextView, Geany (éditeur temporaire et recherche), Thunar (emplacement), Zenity (entry), Telegram (champ de message), Chromium (textarea et barre d’adresse), Kitty classes kitty et kitty-dropterm.
  • Texte témoin exact, bracketed paste conservé dans Kitty; aucun message envoyé, formulaire soumis, navigation déclenchée ou shell exécutant le texte. Presse-papiers texte restauré, fichiers/profils isolés et retirés.

Limites

Une classe de fenêtre ne distingue pas un terminal intégré de son éditeur. Dans ce contexte, utiliser --clipboard-only et le collage manuel. Pas de promesse de collage universel ni de détection accessibilité dans cette version. Syntaxe Hyprland historique couverte par simulation seulement.

Fusion et installation locale demandées explicitement par Mathieu.

— Pi 🥧

## Objectif Rendre le collage utilisable dans les champs GTK/Qt et les navigateurs, tout en conservant Ctrl+Maj+V dans les terminaux configurés. ## Implémentation - Ctrl+V devient le défaut compilé; une liste `paste_shortcuts` explicitement configurée reste inchangée. - `[[sink.paste_rules]]` associe une classe de fenêtre Hyprland exacte (sans distinction de casse) à un raccourci autorisé; première correspondance prioritaire, sinon premier raccourci par défaut. - Règles bornées et validées avant capture, backend Hyprland requis; aucune regex ni métadonnée de fenêtre insérée dans le code Lua. - Une seule émission ciblée par adresse; adresse et classe revérifiées avant dispatch, sans repli après échec ou résultat ambigu. - `type`, `paste+none`, listes vides et `--clipboard-only` restent sans lecture Hyprland. - Documentation, exemple et tests de priorité, validation, confidentialité et absence de seconde tentative. ## Vérifications locales - `make lint test module-check installcheck GO_TEST_FLAGS='-race -count=1'` : succès. Aucune CI distante : Actions reste désactivé, conformément au choix de Mathieu. - Chemin Go réel `sink.New` → `Deliver` : GTK 3/4 Entry et TextView, Geany (éditeur temporaire et recherche), Thunar (emplacement), Zenity (entry), Telegram (champ de message), Chromium (textarea et barre d’adresse), Kitty classes `kitty` et `kitty-dropterm`. - Texte témoin exact, bracketed paste conservé dans Kitty; aucun message envoyé, formulaire soumis, navigation déclenchée ou shell exécutant le texte. Presse-papiers texte restauré, fichiers/profils isolés et retirés. ## Limites Une classe de fenêtre ne distingue pas un terminal intégré de son éditeur. Dans ce contexte, utiliser `--clipboard-only` et le collage manuel. Pas de promesse de collage universel ni de détection accessibilité dans cette version. Syntaxe Hyprland historique couverte par simulation seulement. Fusion et installation locale demandées explicitement par Mathieu. — Pi 🥧
Default to Ctrl+V and allow exact, case-insensitive Hyprland class rules for terminals. Keep one targeted dispatch, recheck class and focus, and preserve explicit shortcut lists and passive delivery paths.

Agent: Pi 🥧
silex merged commit 6f3933ba17 into main 2026-10-11 03:37:58 +00:00
Author
Owner

Installation locale vérifiée sur le commit exact de main : 6f3933ba1745acd5dca042f1d336e2a07781a24c (vcs.modified=false).

  • Vérifications locales relancées sur main : lint, toute la suite -race -count=1, modules et installation temporaire.
  • Binaire et documentation installés; doctor --json positif.
  • Configuration locale : Ctrl+V par défaut, Ctrl+Maj+V pour les classes observées kitty et kitty-dropterm; politiques presse-papiers et retours à la ligne conservées.
  • Pont UI QuickShell relancé sur le nouveau binaire; état Murmur idle.
  • Sauvegarde de rollback du binaire, de la configuration et des docs conservée localement.

Aucune CI distante ajoutée ou activée.

— Pi 🥧

Installation locale vérifiée sur le commit exact de `main` : `6f3933ba1745acd5dca042f1d336e2a07781a24c` (`vcs.modified=false`). - Vérifications locales relancées sur `main` : lint, toute la suite `-race -count=1`, modules et installation temporaire. - Binaire et documentation installés; `doctor --json` positif. - Configuration locale : Ctrl+V par défaut, Ctrl+Maj+V pour les classes observées `kitty` et `kitty-dropterm`; politiques presse-papiers et retours à la ligne conservées. - Pont UI QuickShell relancé sur le nouveau binaire; état Murmur `idle`. - Sauvegarde de rollback du binaire, de la configuration et des docs conservée localement. Aucune CI distante ajoutée ou activée. — Pi 🥧
Sign in to join this conversation.
No reviewers
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
2027a/murmur!86
No description provided.