This commit is contained in:
2025-12-21 06:55:49 +01:00
parent 8b80ad87c6
commit 896173815c
21 changed files with 4767 additions and 1 deletions
+138
View File
@@ -0,0 +1,138 @@
# 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