GNOME ASUS Keyboard RGB - Structure du Projet ============================================== gnome-asus-kbd-rgb/ │ ├── README.md # Documentation principale du projet ├── CLAUDE.md # Guide pour Claude Code ├── CHANGELOG.md # Historique des modifications ├── gnome_asus_kbd_rgb_claude_prompt.md # Consignes initiales │ ├── extension/ # Code source de l'extension GNOME Shell │ ├── extension.js # Point d'entrée (lifecycle: init/enable/disable) │ ├── ui.js # Interface utilisateur (popover, sliders, presets) │ ├── backend.js # Interface sysfs et logique métier │ ├── metadata.json # Métadonnées (UUID, version, shell-version) │ ├── stylesheet.css # Styles CSS personnalisés │ └── schemas/ │ └── org.gnome.shell.extensions.asuskbdrgb.gschema.xml │ # Schéma GSettings (persistance) │ ├── docs/ # Documentation complète │ ├── INSTALL.md # Guide d'installation détaillé │ ├── TROUBLESHOOTING.md # Résolution des problèmes │ ├── TESTING.md # Checklist de tests (120+ items) │ └── UI_SCHEMA.md # Schémas de l'interface (Mermaid, ASCII) │ └── tools/ # Scripts utilitaires └── install-local.sh # Script d'installation automatique Modules Principaux ================== 1. backend.js (Interface Système) - checkHardwareSupport() : Vérifie la présence du matériel - checkPermissions() : Vérifie les droits d'accès - getMaxBrightness() : Lit la valeur max - readBrightness() : Lit la brightness actuelle - writeBrightness(level) : Écrit la brightness (0-3) - writeRGB(r, g, b, master) : Écrit RGB avec master gain - writeRGBDebounced() : Écrit RGB avec debouncing (75ms) - parsePreset(string) : Parse "R,G,B" en objet - rgbToHex(r, g, b) : Convertit RGB en #RRGGBB - cleanup() : Nettoie les ressources 2. ui.js (Interface Utilisateur) - KeyboardRGBIndicator : Classe principale (extends PanelMenu.Button) - _buildUI() : Construit l'interface complète - _buildBrightnessButtons() : Crée les 4 boutons d'intensité - _buildRGBSliders() : Crée les sliders RGB + Master - _buildInfoLine() : Crée la ligne d'information - _buildPresets() : Crée les 6 boutons preset - _buildErrorUI() : Affiche les messages d'erreur - _onBrightnessButtonClicked() : Gère les clics sur boutons - _onRGBChanged() : Applique les changements RGB - _onPresetClicked() : Applique un preset - _applyCurrentState() : Restaure l'état au démarrage 3. extension.js (Lifecycle) - AsusKeyboardRGBExtension : Classe principale (extends Extension) - enable() : Active l'extension - disable() : Désactive l'extension Fichiers sysfs ============== /sys/class/leds/asus::kbd_backlight/ ├── brightness # Intensité (0..max_brightness) ├── max_brightness # Valeur maximale (lecture seule) └── kbd_rgb_mode # Couleur RGB (format: "1 0 R G B 0") Configuration GSettings ======================= Schéma: org.gnome.shell.extensions.asuskbdrgb Clés disponibles: - red (int) : Composante rouge (0-255) - green (int) : Composante verte (0-255) - blue (int) : Composante bleue (0-255) - brightness-level (int) : Niveau d'intensité (0-3) - master-gain (int) : Gain master (0-100) - rgb-step (int) : Pas d'ajustement (défaut: 5) - preset-1..6 (string) : Presets couleur (format "R,G,B") - master-mode (string) : Mode du master slider (défaut: "gain") Installation ============ 1. Configuration permissions (obligatoire): sudo tee /etc/udev/rules.d/99-asus-kbd.rules <<< 'SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", GROUP="kbdled", MODE="0660"' sudo groupadd -f kbdled sudo usermod -aG kbdled $USER sudo udevadm control --reload-rules && sudo udevadm trigger # Logout/Login requis ! 2. Installation extension: ./tools/install-local.sh 3. Rechargement GNOME Shell: - X11: Alt+F2, "r", Enter - Wayland: Logout/Login Dépendances =========== Runtime: - GNOME Shell 48 - GLib/GIO (pour sysfs) - GSettings (pour persistance) - Module kernel: asus-nb-wmi Build: - glib-compile-schemas Prochaines Améliorations (Post-MVP) ==================================== - [ ] Page de préférences (prefs.js) pour modifier les presets - [ ] Support de modes RGB animés (breathing, wave, etc.) - [ ] Support multi-zones (si matériel compatible) - [ ] Export/Import de configurations - [ ] Profils par application - [ ] Raccourcis clavier globaux - [ ] Indicateur de synchronisation avec le matériel - [ ] Support d'autres modes master (offset, HSV)