Files
gnome-asus-kbd-rgb/PROJECT_STRUCTURE.txt
2025-12-21 06:55:49 +01:00

132 lines
5.0 KiB
Plaintext

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)