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

4.8 KiB
Raw Blame History

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 dintensité (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