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}"