132 lines
5.0 KiB
Plaintext
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)
|