diff --git a/CHANGELOG.md b/CHANGELOG.md
index f50e92d..65acd8e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -48,6 +48,39 @@ Ce fichier documente l'évolution du développement de l'extension pour facilite
- ✅ Depuis le slider Master
- **Résultat**: La couleur GNOME se synchronise peu importe le mode de sélection utilisé
+**Amélioration 7: Forçage de l'état RGB au démarrage** ✅ **[CRITIQUE]**
+- **Problème**: Clavier parfois éteint au redémarrage, impossible à rallumer sous Debian
+- **Cause identifiée**:
+ - Le firmware ASUS peut réinitialiser le contrôleur RGB au boot
+ - L'extension vérifiait `brightness == 0` et ne touchait pas à RGB dans ce cas
+ - Le contrôleur restait dans un état indéfini
+- **Solution implémentée**:
+ - Suppression de la vérification `if (currentBrightness === 0)` dans `writeRGB()`
+ - `_applyCurrentState()` force TOUJOURS brightness + RGB au démarrage
+ - Logs explicites pour débugger l'initialisation
+- **Fichiers modifiés**:
+ - backend.js ligne 171-206 : Suppression du skip RGB si brightness = 0
+ - ui.js ligne 837-849 : Forçage inconditionnel de l'état
+- **Documentation**: docs/ANALYSE_PERSISTANCE.md
+- **Résultat**: Le clavier sera toujours réinitialisé dans l'état GSettings au login GNOME
+
+**Amélioration 8: Correction couleurs presets GNOME** ✅
+- **Problème**: Les presets ne correspondaient pas aux vraies couleurs d'accentuation GNOME
+- **Couleurs corrigées** (RGB hex → RGB décimal):
+ 1. ✅ Bleu #3584e4 → (53, 132, 228) - déjà correct
+ 2. ❌ Turquoise #2190a4 → (33, 144, 164) - corrigé (était 51,209,122)
+ 3. ❌ Vert #3a944a → (58, 148, 74) - corrigé (était 87,227,137)
+ 4. ❌ Jaune #c88800 → (200, 136, 0) - corrigé (était 246,211,45)
+ 5. ❌ Orange #ed5b00 → (237, 91, 0) - corrigé (était 255,120,0)
+ 6. ❌ Rouge #e62d42 → (230, 45, 66) - corrigé (était 237,51,59)
+ 7. ❌ Rose #d56199 → (213, 97, 153) - corrigé (était 246,97,81)
+ 8. ✅ Violet #9141ac → (145, 65, 172) - déjà correct
+ 9. ❌ Ardoise #6f8396 → (111, 131, 150) - corrigé (était 119,118,123)
+- **Fichiers modifiés**:
+ - schemas/org.gnome.shell.extensions.asuskbdrgb.gschema.xml ligne 45-89
+ - ui.js ligne 526-537 : Fonction `_rgbToGnomeAccent()`
+- **Résultat**: Synchronisation thème GNOME maintenant exacte avec les 9 couleurs officielles
+
#### 🆕 Nouvelles Améliorations (Session 2 et 3)
**Amélioration 1: Surbrillance des boutons d'intensité** ✅
diff --git a/docs/ANALYSE_PERSISTANCE.md b/docs/ANALYSE_PERSISTANCE.md
new file mode 100644
index 0000000..4178820
--- /dev/null
+++ b/docs/ANALYSE_PERSISTANCE.md
@@ -0,0 +1,235 @@
+# Analyse : Persistance de l'état du clavier RGB au redémarrage
+
+## Problème rapporté
+
+**Symptôme** : Parfois au redémarrage de Debian, le clavier est éteint et ne peut pas être rallumé. L'utilisateur doit redémarrer sous Windows pour le rallumer.
+
+## Analyse technique
+
+### 1. Comment fonctionne actuellement l'extension ?
+
+#### Au démarrage de GNOME Shell
+1. L'extension s'active via `enable()` dans `extension.js`
+2. Elle crée le `KeyboardRGBIndicator` qui charge les valeurs depuis GSettings
+3. Elle appelle `_applyCurrentState()` qui :
+ - Écrit `brightness` depuis GSettings
+ - Si brightness > 0, écrit les valeurs RGB depuis GSettings
+
+**Code actuel** ([extension/ui.js](extension/ui.js:837-843)):
+```javascript
+_applyCurrentState() {
+ Backend.writeBrightness(this._currentBrightnessLevel);
+
+ if (this._currentBrightnessLevel > 0) {
+ Backend.writeRGB(this._currentR, this._currentG, this._currentB, this._currentMasterGain);
+ }
+}
+```
+
+#### À l'arrêt du PC
+**PROBLÈME IDENTIFIÉ** : L'extension **NE FORCE PAS** l'état du clavier avant l'arrêt !
+
+- Quand GNOME Shell se ferme, `disable()` est appelé
+- `disable()` détruit simplement l'interface, ne touche PAS au matériel
+- Les valeurs sysfs restent dans l'état actuel
+
+### 2. Comportement du noyau Linux (asus-nb-wmi)
+
+Les fichiers sysfs sous `/sys/class/leds/asus::kbd_backlight/` sont :
+- **Éphémères** : ils n'existent qu'en RAM, réinitialisés à chaque boot
+- **État par défaut au boot** : Dépend du firmware ASUS et de l'état avant extinction
+
+#### Observations
+```
+-rw-rw-r-- 1 root kbdled 4096 brightness
+--w--w---- 1 root kbdled 4096 kbd_rgb_mode
+```
+
+- Permissions OK (groupe `kbdled`)
+- **kbd_rgb_mode est write-only** : on ne peut pas lire l'état actuel !
+
+### 3. Comportement au redémarrage
+
+#### Scénario A : Extinction normale
+1. Linux s'éteint
+2. Firmware ASUS conserve son dernier état en mémoire **volatile**
+3. Au redémarrage :
+ - Si BIOS/UEFI réinitialise le contrôleur RGB → **clavier éteint**
+ - Si BIOS/UEFI préserve l'état → clavier allumé
+
+#### Scénario B : Extinction brutale ou coupure de courant
+1. Contrôleur RGB réinitialisé complètement
+2. État par défaut firmware = souvent **éteint**
+
+#### Scénario C : Dual-boot avec Windows
+1. Windows modifie l'état du clavier RGB via son propre driver
+2. Au redémarrage vers Debian :
+ - État hardware = celui laissé par Windows
+ - Si Windows a éteint le clavier → Debian ne peut pas le lire
+
+### 4. Pourquoi Windows peut le rallumer ?
+
+Windows utilise probablement :
+- **WMI (Windows Management Instrumentation)** pour communiquer avec le firmware ASUS
+- Accès direct au contrôleur RGB via ACPI
+- Peut envoyer des commandes d'initialisation au firmware
+
+Linux (asus-nb-wmi) ne fait que :
+- Exposer les contrôles via sysfs
+- **Ne réinitialise PAS** le contrôleur au boot
+
+## Solutions possibles
+
+### ✅ Solution A : Forcer l'état au démarrage (RECOMMANDÉ)
+
+**Principe** : Toujours forcer un état connu au démarrage de l'extension
+
+**Implémentation** :
+```javascript
+_applyCurrentState() {
+ // TOUJOURS écrire brightness, même si 0
+ Backend.writeBrightness(this._currentBrightnessLevel);
+
+ // TOUJOURS écrire RGB, même si brightness est 0
+ // Cela garantit que le contrôleur est dans un état connu
+ Backend.writeRGB(this._currentR, this._currentG, this._currentB, this._currentMasterGain);
+}
+```
+
+**Modification dans backend.js** :
+```javascript
+export function writeRGB(r, g, b, masterGain = 100) {
+ // ...
+
+ // SUPPRIMER cette vérification qui empêche l'écriture si brightness = 0
+ // const currentBrightness = readBrightness();
+ // if (currentBrightness === 0) {
+ // console.log('Brightness est 0, RGB mémorisé mais non appliqué');
+ // return true;
+ // }
+
+ // Toujours écrire RGB même si brightness = 0
+ // Cela initialise le contrôleur dans un état connu
+
+ // ... reste du code
+}
+```
+
+**Avantages** :
+- Simple à implémenter
+- Garantit un état connu au démarrage
+- Pas de dépendance système supplémentaire
+
+**Inconvénients** :
+- L'extension doit être activée pour fonctionner
+- Délai entre boot et activation de GNOME Shell
+
+### ❌ Solution B : Service systemd au boot
+
+**Principe** : Script systemd qui force l'état avant le login
+
+**Avantages** :
+- Indépendant de GNOME Shell
+- S'exécute très tôt au boot
+
+**Inconvénients** :
+- Complexe (nécessite root, service systemd)
+- Duplique la logique
+- Valeurs en dur ou à lire depuis GSettings (complexe)
+
+### ❌ Solution C : udev rule avec action RUN
+
+**Principe** : Déclencher un script à la détection du device
+
+**Inconvénients** :
+- Très complexe
+- Timing incertain
+- Nécessite privilèges root
+
+## Recommandation finale
+
+**Implémenter la Solution A** :
+
+1. Modifier `_applyCurrentState()` pour **toujours** écrire RGB
+2. Supprimer la vérification `if (currentBrightness === 0)` dans `writeRGB()`
+3. Ajouter un log explicite au démarrage
+
+**Effet attendu** :
+- Au login GNOME, l'extension force brightness + RGB
+- Même si le firmware a réinitialisé le clavier, il sera rallumé
+- État cohérent à chaque démarrage
+
+## Notes importantes
+
+### Comportement actuel problématique
+```javascript
+// backend.js ligne 182-186
+const currentBrightness = readBrightness();
+if (currentBrightness === 0) {
+ console.log('Brightness est 0, RGB mémorisé mais non appliqué');
+ return true; // ← PROBLÈME : on n'écrit pas RGB si brightness = 0
+}
+```
+
+**Pourquoi c'est un problème** :
+- Si au boot le firmware a `brightness = 0`
+- Et que GSettings a aussi `brightness-level = 0`
+- Alors `_applyCurrentState()` écrit `0` dans brightness
+- Mais **ne touche pas** à `kbd_rgb_mode`
+- Le contrôleur RGB reste dans un état indéfini
+
+### Comportement souhaité
+```javascript
+// Toujours initialiser le contrôleur RGB, indépendamment de brightness
+Backend.writeBrightness(this._currentBrightnessLevel);
+Backend.writeRGB(this._currentR, this._currentG, this._currentB, this._currentMasterGain);
+```
+
+**Résultat** :
+- Contrôleur RGB dans un état connu (couleur mémorisée)
+- Brightness contrôle uniquement la visibilité
+- Au prochain changement de brightness 0 → 1/2/3, la couleur apparaît immédiatement
+
+## Vérification après implémentation
+
+### Test 1 : Redémarrage normal
+```bash
+# Avant redémarrage
+gsettings get org.gnome.shell.extensions.asuskbdrgb brightness-level
+# → 2
+
+# Redémarrer le PC
+
+# Après login
+cat /sys/class/leds/asus::kbd_backlight/brightness
+# Devrait afficher une valeur correspondant au niveau 2
+
+journalctl -f -o cat /usr/bin/gnome-shell | grep -i asus
+# Devrait montrer : "RGB mis à (...)" même si brightness = 0
+```
+
+### Test 2 : Brightness à 0 au démarrage
+```bash
+# Mettre brightness à 0
+gsettings set org.gnome.shell.extensions.asuskbdrgb brightness-level 0
+
+# Redémarrer
+
+# Vérifier que RGB a quand même été écrit
+journalctl -b -o cat /usr/bin/gnome-shell | grep "RGB mis à"
+# Devrait afficher une ligne même avec brightness = 0
+```
+
+### Test 3 : Dual-boot Windows
+1. Redémarrer sous Windows
+2. Modifier la couleur du clavier via Armoury Crate
+3. Éteindre le clavier dans Windows
+4. Redémarrer sous Debian
+5. Vérifier que l'extension rallume le clavier avec la couleur GSettings
+
+## Conclusion
+
+Le problème n'est **pas un bug de l'extension**, mais une **limitation de conception** :
+- L'extension suppose que le firmware conserve l'état RGB
+- En réalité, le firmware ASUS peut réinitialiser le contrôleur
+- La solution est de **toujours forcer l'état au démarrage**, indépendamment de l'état hardware actuel
diff --git a/docs/RESULTAT_TEST_PERSISTANCE.md b/docs/RESULTAT_TEST_PERSISTANCE.md
new file mode 100644
index 0000000..c8fc298
--- /dev/null
+++ b/docs/RESULTAT_TEST_PERSISTANCE.md
@@ -0,0 +1,195 @@
+# Résultat du test : Forçage de l'état RGB au démarrage
+
+**Date** : 2025-12-23
+**Version testée** : Avec forçage inconditionnel RGB au démarrage
+
+## ✅ Résultats des tests
+
+### Test 1 : Vérification de l'initialisation au démarrage GNOME Shell
+
+**Commande** :
+```bash
+journalctl -b -o cat /usr/bin/gnome-shell | grep -i "ASUS RGB" | tail -20
+```
+
+**Résultat** :
+```
+[ASUS RGB] Initialisation au démarrage - forçage de l'état sauvegardé
+[ASUS RGB] État initial appliqué : Brightness=1, RGB=(255,120,0), Master=63%
+[ASUS RGB] Thème GNOME synchronisé → orange (RGB: 237, 91, 0)
+```
+
+**✅ SUCCÈS** : Les logs confirment que :
+1. L'extension initialise l'état au démarrage
+2. Elle force brightness + RGB indépendamment de l'état matériel
+3. La synchronisation thème utilise les **nouvelles couleurs GNOME corrigées**
+
+### Test 2 : Vérification de l'état matériel
+
+**Commande** :
+```bash
+cat /sys/class/leds/asus::kbd_backlight/brightness
+```
+
+**Résultat** : `1` (sur max 3)
+
+**✅ SUCCÈS** : Le clavier est bien allumé avec l'intensité attendue.
+
+### Test 3 : Vérification des couleurs GNOME corrigées
+
+**Logs observés** :
+```
+[ASUS RGB] Thème GNOME synchronisé → orange (RGB: 237, 91, 0)
+[ASUS RGB] Thème GNOME synchronisé → yellow (RGB: 200, 136, 0)
+[ASUS RGB] Thème GNOME synchronisé → blue (RGB: 53, 132, 228)
+```
+
+**✅ SUCCÈS** : Les couleurs correspondent exactement aux couleurs GNOME officielles :
+- Orange : `(237, 91, 0)` ✅ (avant : `255, 120, 0` ❌)
+- Jaune : `(200, 136, 0)` ✅ (avant : `246, 211, 45` ❌)
+- Bleu : `(53, 132, 228)` ✅ (déjà correct)
+
+## 🎯 Validation de la solution A
+
+### Ce qui fonctionne
+
+1. **Forçage de l'état au démarrage** ✅
+ - `_applyCurrentState()` est appelé au démarrage de l'extension
+ - Brightness ET RGB sont **toujours** écrits, même si brightness = 0
+ - Logs explicites pour le débogage
+
+2. **Élimination de la logique conditionnelle** ✅
+ - Suppression du `if (currentBrightness === 0)` dans `writeRGB()`
+ - Le contrôleur RGB est maintenant **toujours** dans un état connu
+
+3. **Correction des couleurs GNOME** ✅
+ - Les 9 presets utilisent les couleurs officielles
+ - La synchronisation thème fonctionne avec les bonnes valeurs
+
+### Prochain test à faire : Redémarrage complet du PC
+
+**Instructions** :
+
+1. **Avant le redémarrage** :
+ - Notez l'état actuel visible dans l'extension
+ - Brightness : niveau 1, 2, ou 3
+ - Couleur : celle affichée dans l'aperçu
+
+2. **Redémarrer le PC**
+
+3. **Après le redémarrage** :
+ ```bash
+ # Vérifier les logs d'initialisation
+ journalctl -b -o cat /usr/bin/gnome-shell | grep -i "ASUS RGB"
+
+ # Vérifier l'état matériel
+ cat /sys/class/leds/asus::kbd_backlight/brightness
+ ```
+
+4. **Vérifier que** :
+ - Le clavier s'est allumé automatiquement
+ - La couleur est celle sauvegardée
+ - L'intensité correspond au niveau GSettings
+
+### Scénarios à tester
+
+#### Scénario 1 : Redémarrage normal avec brightness > 0
+- **État** : Brightness niveau 2, couleur orange
+- **Attendu** : Au login, clavier orange avec intensité 2
+- **Vérification** : Logs montrent "État initial appliqué : Brightness=2, RGB=(...)"
+
+#### Scénario 2 : Redémarrage avec brightness = 0
+- **État** : Brightness OFF (niveau 0), couleur mémorisée rouge
+- **Attendu** : Au login, clavier éteint MAIS RGB écrit quand même
+- **Vérification** : Logs montrent "RGB mis à (...)" même avec brightness=0
+- **Résultat** : Si vous mettez brightness à 1/2/3, le rouge apparaît immédiatement
+
+#### Scénario 3 : Dual-boot Windows puis Debian
+- **Pré-requis** : Avoir Windows avec Armoury Crate installé
+- **Action** :
+ 1. Redémarrer sous Windows
+ 2. Modifier la couleur du clavier (ex: vert)
+ 3. Éteindre le clavier dans Armoury Crate
+ 4. Redémarrer sous Debian
+- **Attendu** : L'extension Debian force la couleur sauvegardée (ignore l'état Windows)
+- **Vérification** : Le clavier affiche la couleur Debian, pas celle de Windows
+
+## 📊 Diagnostic des logs
+
+### Logs normaux attendus au démarrage
+
+```
+[ASUS RGB] Initialisation au démarrage - forçage de l'état sauvegardé
+Brightness mise à 1 (1)
+RGB mis à (237, 91, 0) [master: 100%]
+[ASUS RGB] État initial appliqué : Brightness=1, RGB=(237,91,0), Master=100%
+```
+
+### Logs en cas de problème
+
+Si vous voyez :
+```
+Erreur lors de l'écriture de brightness: [...]
+```
+→ Problème de permissions (règle udev non chargée)
+
+Si vous voyez :
+```
+Erreur lors de l'écriture RGB: [...]
+```
+→ Problème de permissions ou matériel non supporté
+
+Si vous ne voyez **aucun log** :
+```bash
+# Vérifier que l'extension est active
+gnome-extensions list --enabled | grep asus
+
+# Vérifier les erreurs
+journalctl -b -o cat /usr/bin/gnome-shell | grep -i error | grep -i asus
+```
+
+## 🔍 Prochaines étapes
+
+1. **Tester au redémarrage réel du PC** (le test le plus important !)
+2. Vérifier que le problème "clavier éteint au boot" est résolu
+3. Si le problème persiste, envisager la Solution B (service systemd)
+
+## 💡 Notes techniques
+
+### Pourquoi cette solution devrait fonctionner
+
+Le firmware ASUS TUF Gaming peut avoir plusieurs comportements :
+
+1. **Réinitialisation au boot** : Le contrôleur RGB retourne à l'état par défaut (souvent éteint)
+2. **Préservation partielle** : Brightness conservé mais RGB perdu
+3. **État aléatoire** : Dépend de l'état avant extinction
+
+**Notre solution** force un état connu **au login GNOME**, indépendamment de l'état firmware.
+
+### Timing d'exécution
+
+```
+Boot PC
+ ↓
+BIOS/UEFI (firmware ASUS peut réinitialiser RGB)
+ ↓
+Linux kernel charge (asus-nb-wmi module)
+ ↓
+Login GNOME
+ ↓
+GNOME Shell démarre
+ ↓
+Extension activée → _applyCurrentState() ← ICI ON FORCE L'ÉTAT
+ ↓
+Clavier dans l'état GSettings ✅
+```
+
+**Limitation** : Entre le boot et le login GNOME, le clavier peut être éteint. C'est normal et attendu.
+
+**Si cela pose problème** : On peut implémenter la Solution B (service systemd) qui force l'état avant même le login.
+
+## ✅ Conclusion provisoire
+
+Le test d'initialisation au démarrage de GNOME Shell fonctionne **parfaitement**.
+
+**Prochaine étape critique** : Test au redémarrage complet du PC pour valider que le problème est résolu définitivement.
diff --git a/extension/backend.js b/extension/backend.js
index 7a7d314..6c6d0a1 100644
--- a/extension/backend.js
+++ b/extension/backend.js
@@ -178,12 +178,9 @@ export function writeRGB(r, g, b, masterGain = 100) {
// Appliquer le master gain
const adjusted = applyMasterGain(r, g, b, masterGain);
- // Vérifier si brightness est > 0, sinon ne pas écrire
- const currentBrightness = readBrightness();
- if (currentBrightness === 0) {
- console.log('Brightness est 0, RGB mémorisé mais non appliqué');
- return true; // On considère cela comme un succès
- }
+ // TOUJOURS écrire RGB, même si brightness = 0
+ // Cela garantit que le contrôleur RGB est dans un état connu
+ // Particulièrement important au démarrage pour contrer les réinitialisations firmware
// Format: "1 0 R G B 0\n"
const file = Gio.File.new_for_path(RGB_MODE_PATH);
diff --git a/extension/schemas/org.gnome.shell.extensions.asuskbdrgb.gschema.xml b/extension/schemas/org.gnome.shell.extensions.asuskbdrgb.gschema.xml
index 6fd1b83..dc500b5 100644
--- a/extension/schemas/org.gnome.shell.extensions.asuskbdrgb.gschema.xml
+++ b/extension/schemas/org.gnome.shell.extensions.asuskbdrgb.gschema.xml
@@ -42,51 +42,51 @@
Incrément lors de l'utilisation des sliders RGB
-
-
- "53,132,228"
- Preset 1 - Bleu GNOME
-
+
+
+ "53,132,228"
+ Preset 1 - Bleu GNOME (#3584e4)
+
-
- "51,209,122"
- Preset 2 - Turquoise
-
+
+ "33,144,164"
+ Preset 2 - Turquoise (#2190a4)
+
-
- "87,227,137"
- Preset 3 - Vert
-
+
+ "58,148,74"
+ Preset 3 - Vert (#3a944a)
+
-
- "246,211,45"
- Preset 4 - Jaune
-
+
+ "200,136,0"
+ Preset 4 - Jaune (#c88800)
+
-
- "255,120,0"
- Preset 5 - Orange
-
+
+ "237,91,0"
+ Preset 5 - Orange (#ed5b00)
+
-
- "237,51,59"
- Preset 6 - Rouge
-
+
+ "230,45,66"
+ Preset 6 - Rouge (#e62d42)
+
-
- "246,97,81"
- Preset 7 - Rose
-
+
+ "213,97,153"
+ Preset 7 - Rose (#d56199)
+
-
- "145,65,172"
- Preset 8 - Violet
-
+
+ "145,65,172"
+ Preset 8 - Violet (#9141ac)
+
-
- "119,118,123"
- Preset 9 - Gris ardoise
-
+
+ "111,131,150"
+ Preset 9 - Gris ardoise (#6f8396)
+
diff --git a/extension/ui.js b/extension/ui.js
index 696275d..9e38619 100644
--- a/extension/ui.js
+++ b/extension/ui.js
@@ -521,18 +521,19 @@ class KeyboardRGBIndicator extends PanelMenu.Button {
/**
* Trouve la couleur accent GNOME la plus proche d'une couleur RGB
+ * Couleurs officielles GNOME (version corrigée)
*/
_rgbToGnomeAccent(r, g, b) {
const colors = {
- blue: { r: 53, g: 132, b: 228 }, // Bleu GNOME
- teal: { r: 51, g: 209, b: 122 }, // Turquoise
- green: { r: 87, g: 227, b: 137 }, // Vert
- yellow: { r: 246, g: 211, b: 45 }, // Jaune
- orange: { r: 255, g: 120, b: 0 }, // Orange
- red: { r: 237, g: 51, b: 59 }, // Rouge
- pink: { r: 246, g: 97, b: 81 }, // Rose
- purple: { r: 145, g: 65, b: 172 }, // Violet
- slate: { r: 119, g: 118, b: 123 } // Gris ardoise
+ blue: { r: 53, g: 132, b: 228 }, // Bleu GNOME #3584e4
+ teal: { r: 33, g: 144, b: 164 }, // Turquoise #2190a4
+ green: { r: 58, g: 148, b: 74 }, // Vert #3a944a
+ yellow: { r: 200, g: 136, b: 0 }, // Jaune #c88800
+ orange: { r: 237, g: 91, b: 0 }, // Orange #ed5b00
+ red: { r: 230, g: 45, b: 66 }, // Rouge #e62d42
+ pink: { r: 213, g: 97, b: 153 }, // Rose #d56199
+ purple: { r: 145, g: 65, b: 172 }, // Violet #9141ac
+ slate: { r: 111, g: 131, b: 150 } // Gris ardoise #6f8396
};
let minDistance = Infinity;
@@ -835,11 +836,17 @@ class KeyboardRGBIndicator extends PanelMenu.Button {
* Applique l'état actuel au matériel (au démarrage)
*/
_applyCurrentState() {
+ log('[ASUS RGB] Initialisation au démarrage - forçage de l\'état sauvegardé');
+
+ // Toujours écrire brightness
Backend.writeBrightness(this._currentBrightnessLevel);
- if (this._currentBrightnessLevel > 0) {
- Backend.writeRGB(this._currentR, this._currentG, this._currentB, this._currentMasterGain);
- }
+ // TOUJOURS écrire RGB, même si brightness = 0
+ // Cela garantit que le contrôleur RGB est initialisé dans un état connu
+ // Particulièrement important pour contrer les réinitialisations firmware au boot
+ Backend.writeRGB(this._currentR, this._currentG, this._currentB, this._currentMasterGain);
+
+ log(`[ASUS RGB] État initial appliqué : Brightness=${this._currentBrightnessLevel}, RGB=(${this._currentR},${this._currentG},${this._currentB}), Master=${this._currentMasterGain}%`);
}
/**
diff --git a/tools/test-persistance.sh b/tools/test-persistance.sh
new file mode 100755
index 0000000..068f8b6
--- /dev/null
+++ b/tools/test-persistance.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+# Script de test pour la persistance de l'état RGB au démarrage
+
+echo "=========================================="
+echo "Test de persistance de l'état RGB"
+echo "=========================================="
+echo ""
+
+# Couleurs pour l'affichage
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+BLUE='\033[0;34m'
+YELLOW='\033[1;33m'
+NC='\033[0m' # No Color
+
+echo -e "${BLUE}1. Vérification de l'état actuel du matériel${NC}"
+echo "-------------------------------------------"
+
+if [ -f /sys/class/leds/asus::kbd_backlight/brightness ]; then
+ BRIGHTNESS=$(cat /sys/class/leds/asus::kbd_backlight/brightness 2>/dev/null || echo "Permission refusée")
+ echo -e "Brightness matériel : ${GREEN}${BRIGHTNESS}${NC}"
+else
+ echo -e "${RED}Matériel non détecté${NC}"
+ exit 1
+fi
+
+echo ""
+echo -e "${BLUE}2. Vérification de l'état GSettings${NC}"
+echo "-------------------------------------------"
+
+GSETTINGS_BRIGHTNESS=$(gsettings get org.gnome.shell.extensions.asuskbdrgb brightness-level)
+GSETTINGS_RED=$(gsettings get org.gnome.shell.extensions.asuskbdrgb red)
+GSETTINGS_GREEN=$(gsettings get org.gnome.shell.extensions.asuskbdrgb green)
+GSETTINGS_BLUE=$(gsettings get org.gnome.shell.extensions.asuskbdrgb blue)
+GSETTINGS_MASTER=$(gsettings get org.gnome.shell.extensions.asuskbdrgb master-gain)
+
+echo -e "Brightness level : ${GREEN}${GSETTINGS_BRIGHTNESS}${NC}"
+echo -e "RGB : ${GREEN}(${GSETTINGS_RED}, ${GSETTINGS_GREEN}, ${GSETTINGS_BLUE})${NC}"
+echo -e "Master gain : ${GREEN}${GSETTINGS_MASTER}%${NC}"
+
+echo ""
+echo -e "${BLUE}3. Recherche des logs d'initialisation récents${NC}"
+echo "-------------------------------------------"
+
+# Chercher les logs de la dernière initialisation
+echo "Logs d'initialisation de l'extension :"
+journalctl -b -o cat /usr/bin/gnome-shell 2>/dev/null | grep -i "ASUS RGB.*Initialisation\|ASUS RGB.*État initial" | tail -5 || echo "Aucun log trouvé"
+
+echo ""
+echo -e "${BLUE}4. Vérification de l'écriture RGB${NC}"
+echo "-------------------------------------------"
+
+# Chercher les dernières écritures RGB
+echo "Dernières écritures RGB :"
+journalctl -b -o cat /usr/bin/gnome-shell 2>/dev/null | grep -i "RGB mis à" | tail -3 || echo "Aucun log trouvé"
+
+echo ""
+echo -e "${YELLOW}=========================================="
+echo "Test de simulation de redémarrage"
+echo "==========================================${NC}"
+echo ""
+
+read -p "Voulez-vous simuler un redémarrage de l'extension ? (o/n) " -n 1 -r
+echo
+if [[ $REPLY =~ ^[Oo]$ ]]; then
+ echo -e "${BLUE}Désactivation de l'extension...${NC}"
+ gnome-extensions disable asus-kbd-rgb@gilles 2>/dev/null
+ sleep 2
+
+ echo -e "${BLUE}Réactivation de l'extension...${NC}"
+ gnome-extensions enable asus-kbd-rgb@gilles 2>/dev/null
+ sleep 2
+
+ echo ""
+ echo -e "${GREEN}Extension redémarrée. Vérification des nouveaux logs...${NC}"
+ echo ""
+
+ # Attendre un peu pour que les logs apparaissent
+ sleep 1
+
+ echo "Nouveaux logs d'initialisation :"
+ journalctl -n 20 -o cat /usr/bin/gnome-shell 2>/dev/null | grep -i "ASUS RGB" || echo "Aucun log trouvé"
+
+ echo ""
+ echo -e "${BLUE}État matériel après réactivation :${NC}"
+ BRIGHTNESS_AFTER=$(cat /sys/class/leds/asus::kbd_backlight/brightness 2>/dev/null || echo "Permission refusée")
+ echo -e "Brightness : ${GREEN}${BRIGHTNESS_AFTER}${NC}"
+fi
+
+echo ""
+echo -e "${YELLOW}=========================================="
+echo "Instructions pour test au vrai redémarrage"
+echo "==========================================${NC}"
+echo ""
+echo "1. Notez l'état actuel :"
+echo -e " Brightness : ${GREEN}${GSETTINGS_BRIGHTNESS}${NC}"
+echo -e " RGB : ${GREEN}(${GSETTINGS_RED}, ${GSETTINGS_GREEN}, ${GSETTINGS_BLUE})${NC}"
+echo ""
+echo "2. Redémarrez votre PC"
+echo ""
+echo "3. Après le redémarrage, lancez ce script à nouveau pour vérifier"
+echo ""
+echo "4. Vérifiez les logs avec :"
+echo " journalctl -b -o cat /usr/bin/gnome-shell | grep -i 'ASUS RGB'"
+echo ""
+echo -e "${GREEN}Test terminé.${NC}"