Files
gnome-asus-kbd-rgb/docs/synthese roue chromatique.md
2025-12-21 06:55:49 +01:00

138 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Synthèse — Mettre en place une roue chromatique (HSV) dans GNOME Shell 48
## Contexte
- GNOME Shell 48 (GJS) utilise **St/Clutter** (pas GTK dans le Shell).
- Il nexiste **pas** de composant natif « roue chromatique » (type `GtkColorChooser`) directement exploitable dans une extension GNOME Shell.
- Objectif : offrir une **roue HSV** pour choisir une couleur (H, S) + un contrôle d**intensité** (V), puis produire un RGB (0255) utilisable pour piloter un matériel (ex. clavier RGB).
---
## Options possibles (du plus recommandé au plus “hybride”)
### Option A — Roue HSV native GNOME Shell (recommandée)
**Principe**
- Créer un widget custom basé sur `Clutter.Canvas`.
- Dessiner une roue HSV (visualisation en V=1 pour lisibilité).
- Capturer les interactions souris :
- angle → **Hue (H)**
- rayon → **Saturation (S)**
- Ajouter un slider pour **Value (V)** (intensité).
- Convertir HSV → RGB (0255) et déclencher un callback.
**Avantages**
- 100% intégré au Shell (look & feel cohérent extension).
- Dépendances minimales (GJS uniquement).
- Utilisable dans un menu top-bar, Quick Settings, ou popup.
- Contrôle immédiat (idéal pour piloter des LED).
**Inconvénients**
- Code à maintenir (rendu + interaction).
- Optimisation possible nécessaire pour performance (cache image).
**Recommandation**
- Cest la meilleure solution pour une extension GNOME 48, surtout si lusage cible est le pilotage hardware RGB.
---
### Option B — Sliders RGB (solution la plus robuste)
**Principe**
- Ne pas faire de roue.
- 3 sliders `St.Slider` ou `PopupSliderMenuItem` :
- R (0255)
- G (0255)
- B (0255)
- Afficher un carré daperçu (preview) `St.Widget` dont la couleur suit les sliders.
**Avantages**
- Très simple, très stable, très maintenable.
- Exact pour piloter des LED (RGB natif).
- Peu de code, faible coût performance.
**Inconvénients**
- Moins intuitif quune roue HSV.
- Expérience utilisateur moins “graphique”.
**Recommandation**
- Excellent si priorité = fiabilité et précision LED.
- Peut être combiné avec la roue (Option A) pour affiner.
---
### Option C — Hybride : application GTK externe (GtkColorChooser) + DBus
**Principe**
- Créer une petite app GTK (hors Shell) utilisant `GtkColorChooser` (roue native GNOME).
- Lextension GNOME Shell lance lapp ou communique via DBus.
- Lapp renvoie la couleur choisie (RGB/HSV) à lextension.
**Avantages**
- UI GNOME native parfaite (roue GTK).
- Moins de code côté Shell pour le rendu.
**Inconvénients**
- Architecture plus lourde (extension + service/app).
- Gestion DBus, packaging, cycle de vie de lapp.
- Moins fluide pour un usage “réglage instantané”.
**Recommandation**
- À considérer si tu veux absolument la roue GTK standard et acceptes la complexité.
---
### Option D — Réutiliser du code existant (extensions / libs)
**Principe**
- Sinspirer dune extension existante (Color Picker, etc.) ou porter un widget JS déjà implémenté.
- Intégrer le code (Canvas, HSV->RGB, interactions) dans ton extension.
**Avantages**
- Gain de temps si un code de roue HSV est déjà éprouvé.
- Possibilité de reprendre des patterns Shell (PopupMenu, Quick Settings, etc.).
**Inconvénients**
- Variabilité de qualité et compatibilité GNOME 48.
- Nécessite vérification licence / maintenance.
**Recommandation**
- Très efficace si tu trouves un code déjà aligné GJS/Clutter moderne.
---
## Rendu “fidèle” vs LED (point important)
- Une roue à lécran (sRGB) ne correspond pas parfaitement au rendu des LED de clavier.
- Recommandé :
- afficher RGB 0255 et/ou HEX
- prévoir un slider dintensité (V) + luminosité matériel
- optionnel : appliquer une correction empirique (ex. réduire le bleu) pour coller au rendu réel.
---
## UX conseillée (pragmatique)
### MVP (simple et efficace)
- Roue HSV (H,S) + slider V
- Aperçu (carré couleur)
- Affichage RGB (0255) + HEX
- Bouton “Appliquer” (ou appliquer en live)
### Version “confort”
- Roue HSV + sliders RGB (affinage)
- Presets (palette)
- Historique des dernières couleurs
- “Appliquer au démarrage” (persist)
---
## Recommandation finale
Pour GNOME Shell 48, le meilleur choix est :
1. **Option A** (roue HSV custom via `Clutter.Canvas`) + slider V
2. compléter par **Option B** (sliders RGB) si tu veux une précision LED maximale
Option C (GTK externe) est valable mais plus lourde et moins adaptée à un réglage rapide dans le Shell.
---
## Livrables possibles (si on passe à limplémentation)
- Widget `HsvWheel` réutilisable (Canvas + interaction)
- Intégration top-bar (PopupMenu) ou Quick Settings
- Callback standard `onColor({r,g,b,h,s,v})`
- Module utilitaire HSV<->RGB
- (Option) pipeline dapplication : sysfs / asusctl / DBus service
s