#!/bin/bash # install-local.sh - Script d'installation locale pour l'extension ASUS Keyboard RGB set -e # Arrêter en cas d'erreur # Couleurs pour l'affichage RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Configuration EXTENSION_UUID="asus-kbd-rgb@gilles" EXTENSION_DIR="$HOME/.local/share/gnome-shell/extensions/$EXTENSION_UUID" PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)" SOURCE_DIR="$PROJECT_DIR/extension" echo -e "${BLUE}=== Installation de l'extension ASUS Keyboard RGB ===${NC}\n" # Vérifier que le dossier source existe if [ ! -d "$SOURCE_DIR" ]; then echo -e "${RED}Erreur: Dossier source non trouvé: $SOURCE_DIR${NC}" exit 1 fi # Vérifier GNOME Shell if ! command -v gnome-shell &> /dev/null; then echo -e "${RED}Erreur: GNOME Shell n'est pas installé${NC}" exit 1 fi GNOME_VERSION=$(gnome-shell --version | grep -oP '\d+' | head -1) echo -e "${GREEN}✓${NC} GNOME Shell version: $GNOME_VERSION" if [ "$GNOME_VERSION" != "48" ]; then echo -e "${YELLOW}⚠ Attention: Cette extension est conçue pour GNOME Shell 48${NC}" echo -e "${YELLOW} Votre version: $GNOME_VERSION${NC}" read -p "Continuer quand même ? (o/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Oo]$ ]]; then exit 1 fi fi # Vérifier le support matériel echo -e "\n${BLUE}Vérification du support matériel...${NC}" if [ ! -d "/sys/class/leds/asus::kbd_backlight" ]; then echo -e "${RED}✗ Clavier ASUS RGB non détecté${NC}" echo -e "${YELLOW} Les fichiers sysfs sont absents: /sys/class/leds/asus::kbd_backlight/${NC}" echo -e "${YELLOW} L'extension s'installera mais ne fonctionnera pas sur ce système.${NC}" read -p "Continuer quand même ? (o/N) " -n 1 -r echo if [[ ! $REPLY =~ ^[Oo]$ ]]; then exit 1 fi else echo -e "${GREEN}✓${NC} Clavier ASUS RGB détecté" fi # Vérifier les permissions echo -e "\n${BLUE}Vérification des permissions...${NC}" if [ -w "/sys/class/leds/asus::kbd_backlight/brightness" ]; then echo -e "${GREEN}✓${NC} Permissions d'écriture OK" # Vérifier que le groupe est bien kbdled BRIGHTNESS_GROUP=$(stat -c '%G' /sys/class/leds/asus::kbd_backlight/brightness 2>/dev/null) if [ "$BRIGHTNESS_GROUP" = "kbdled" ]; then echo -e "${GREEN}✓${NC} Groupe kbdled configuré correctement" fi else echo -e "${YELLOW}⚠ Permissions insuffisantes${NC}" echo -e "${YELLOW} Vous devez configurer les règles udev pour utiliser l'extension.${NC}" echo -e "${YELLOW} Voir: docs/INSTALL.md section 'Configuration des permissions'${NC}" echo -e "" echo -e "${BLUE}Commandes rapides :${NC}" echo -e " sudo tee /etc/udev/rules.d/99-asus-kbd.rules > /dev/null << 'EOF'" echo -e " ACTION==\"add\", SUBSYSTEM==\"leds\", KERNEL==\"asus::kbd_backlight\", TAG+=\"uaccess\", RUN+=\"/bin/sh -c 'chgrp kbdled /sys/class/leds/asus::kbd_backlight/brightness && chmod g+w /sys/class/leds/asus::kbd_backlight/brightness'\"" echo -e " ACTION==\"add\", SUBSYSTEM==\"leds\", KERNEL==\"asus::kbd_backlight\", TAG+=\"uaccess\", RUN+=\"/bin/sh -c 'chgrp kbdled /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode && chmod g+w /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode'\"" echo -e " EOF" echo -e " sudo groupadd -f kbdled" echo -e " sudo usermod -aG kbdled \$USER" echo -e " sudo udevadm control --reload-rules" echo -e " sudo modprobe -r asus_nb_wmi && sudo modprobe asus_nb_wmi" echo -e "" fi # Désactiver l'extension si elle est active if gnome-extensions list | grep -q "$EXTENSION_UUID"; then echo -e "\n${BLUE}Désactivation de l'extension existante...${NC}" gnome-extensions disable "$EXTENSION_UUID" 2>/dev/null || true echo -e "${GREEN}✓${NC} Extension désactivée" fi # Créer le dossier de destination echo -e "\n${BLUE}Création du dossier d'installation...${NC}" mkdir -p "$EXTENSION_DIR" echo -e "${GREEN}✓${NC} Dossier créé: $EXTENSION_DIR" # Copier les fichiers echo -e "\n${BLUE}Copie des fichiers...${NC}" cp -v "$SOURCE_DIR/extension.js" "$EXTENSION_DIR/" cp -v "$SOURCE_DIR/ui.js" "$EXTENSION_DIR/" cp -v "$SOURCE_DIR/backend.js" "$EXTENSION_DIR/" cp -v "$SOURCE_DIR/metadata.json" "$EXTENSION_DIR/" cp -v "$SOURCE_DIR/stylesheet.css" "$EXTENSION_DIR/" # Copier le schéma GSettings echo -e "\n${BLUE}Copie du schéma GSettings...${NC}" mkdir -p "$EXTENSION_DIR/schemas" cp -v "$SOURCE_DIR/schemas/org.gnome.shell.extensions.asuskbdrgb.gschema.xml" "$EXTENSION_DIR/schemas/" # Copier les wallpapers (si présents) if [ -d "$PROJECT_DIR/wallpapers" ]; then echo -e "\n${BLUE}Copie des fonds d'écran...${NC}" mkdir -p "$EXTENSION_DIR/wallpapers" # Compter les fichiers .jpg wallpaper_count=$(find "$PROJECT_DIR/wallpapers" -maxdepth 1 -name "ec_v_*.jpg" 2>/dev/null | wc -l) if [ "$wallpaper_count" -gt 0 ]; then cp -v "$PROJECT_DIR/wallpapers"/ec_v_*.jpg "$EXTENSION_DIR/wallpapers/" 2>/dev/null || true echo -e "${GREEN}✓${NC} $wallpaper_count fond(s) d'écran copié(s)" else echo -e "${YELLOW}⚠${NC} Aucun fond d'écran trouvé (ec_v_*.jpg)" echo -e "${YELLOW} Placez vos wallpapers dans: $PROJECT_DIR/wallpapers/${NC}" echo -e "${YELLOW} Format attendu: ec_v_blue.jpg, ec_v_teal.jpg, etc.${NC}" fi fi # Compiler le schéma echo -e "\n${BLUE}Compilation du schéma GSettings...${NC}" if command -v glib-compile-schemas &> /dev/null; then glib-compile-schemas "$EXTENSION_DIR/schemas/" echo -e "${GREEN}✓${NC} Schéma compilé" else echo -e "${RED}✗ glib-compile-schemas non trouvé${NC}" echo -e "${YELLOW} Installez glib-2.0-dev ou libglib2.0-bin${NC}" exit 1 fi # Vérifier l'installation echo -e "\n${BLUE}Vérification de l'installation...${NC}" if [ -f "$EXTENSION_DIR/extension.js" ] && [ -f "$EXTENSION_DIR/schemas/gschemas.compiled" ]; then echo -e "${GREEN}✓${NC} Installation réussie" else echo -e "${RED}✗ Installation incomplète${NC}" exit 1 fi # Activer l'extension echo -e "\n${BLUE}Activation de l'extension...${NC}" gnome-extensions enable "$EXTENSION_UUID" echo -e "${GREEN}✓${NC} Extension activée" # Instructions finales echo -e "\n${GREEN}=== Installation terminée ===${NC}\n" echo -e "${BLUE}Prochaines étapes :${NC}" # Vérifier le type de session if [ "$XDG_SESSION_TYPE" = "wayland" ]; then echo -e " 1. ${YELLOW}Déconnectez-vous et reconnectez-vous${NC} (session Wayland)" else echo -e " 1. Rechargez GNOME Shell : ${YELLOW}Alt+F2${NC}, tapez ${YELLOW}r${NC}, appuyez sur Entrée" fi echo -e " 2. L'icône devrait apparaître dans la barre supérieure" echo -e " 3. Cliquez sur l'icône pour contrôler le rétroéclairage\n" if [ ! -w "/sys/class/leds/asus::kbd_backlight/brightness" ]; then echo -e "${YELLOW}⚠ IMPORTANT :${NC}" echo -e " Vous devez configurer les permissions udev avant utilisation." echo -e " Consultez ${BLUE}docs/INSTALL.md${NC} pour les instructions.\n" fi echo -e "${BLUE}Logs en temps réel :${NC}" echo -e " journalctl -f -o cat /usr/bin/gnome-shell | grep -i asus\n" echo -e "${BLUE}Désinstallation :${NC}" echo -e " gnome-extensions disable $EXTENSION_UUID" echo -e " rm -rf $EXTENSION_DIR\n" echo -e "${GREEN}Profitez de votre clavier RGB ! 🎨${NC}"