185 lines
7.2 KiB
Bash
Executable File
185 lines
7.2 KiB
Bash
Executable File
#!/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}"
|