Actualiser gnome_extension.sh

This commit is contained in:
2025-08-14 07:23:36 +00:00
parent 871eb0bee3
commit c3c16da1a3

View File

@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# Script de sauvegarde et restauration des extensions GNOME # Script de sauvegarde et restauration des extensions GNOME
# Auteur: Fontaine Johnny # Auteur: Assistant Claude
# Version: 1.0 # Version: 1.0
# Couleurs pour l'affichage # Couleurs pour l'affichage
@@ -36,40 +36,40 @@ print_error() {
# Fonction pour vérifier les prérequis # Fonction pour vérifier les prérequis
check_requirements() { check_requirements() {
print_info "Vérification des prérequis..." print_info "Vérification des prérequis..."
# Vérifier si GNOME Shell est en cours d'exécution # Vérifier si GNOME Shell est en cours d'exécution
if ! pgrep -x "gnome-shell" > /dev/null; then if ! pgrep -x "gnome-shell" > /dev/null; then
print_warning "GNOME Shell ne semble pas être en cours d'exécution" print_warning "GNOME Shell ne semble pas être en cours d'exécution"
fi fi
# Vérifier si dconf est installé # Vérifier si dconf est installé
if ! command -v dconf &> /dev/null; then if ! command -v dconf &> /dev/null; then
print_error "dconf n'est pas installé. Veuillez l'installer avec: sudo apt install dconf-cli" print_error "dconf n'est pas installé. Veuillez l'installer avec: sudo apt install dconf-cli"
exit 1 exit 1
fi fi
# Vérifier si gsettings est disponible # Vérifier si gsettings est disponible
if ! command -v gsettings &> /dev/null; then if ! command -v gsettings &> /dev/null; then
print_error "gsettings n'est pas disponible" print_error "gsettings n'est pas disponible"
exit 1 exit 1
fi fi
print_success "Prérequis vérifiés" print_success "Prérequis vérifiés"
} }
# Fonction de sauvegarde # Fonction de sauvegarde
backup_extensions() { backup_extensions() {
print_info "Début de la sauvegarde des extensions GNOME..." print_info "Début de la sauvegarde des extensions GNOME..."
# Créer le répertoire de sauvegarde # Créer le répertoire de sauvegarde
mkdir -p "$BACKUP_DIR" mkdir -p "$BACKUP_DIR"
# Date de la sauvegarde # Date de la sauvegarde
BACKUP_DATE=$(date +"%Y%m%d_%H%M%S") BACKUP_DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/gnome-extensions-$BACKUP_DATE.tar.gz" BACKUP_FILE="$BACKUP_DIR/gnome-extensions-$BACKUP_DATE.tar.gz"
SETTINGS_FILE="$BACKUP_DIR/gnome-settings-$BACKUP_DATE.dconf" SETTINGS_FILE="$BACKUP_DIR/gnome-settings-$BACKUP_DATE.dconf"
EXTENSIONS_LIST="$BACKUP_DIR/extensions-list-$BACKUP_DATE.txt" EXTENSIONS_LIST="$BACKUP_DIR/extensions-list-$BACKUP_DATE.txt"
# Sauvegarder les extensions installées # Sauvegarder les extensions installées
if [ -d "$EXTENSIONS_DIR" ]; then if [ -d "$EXTENSIONS_DIR" ]; then
print_info "Sauvegarde des fichiers d'extensions..." print_info "Sauvegarde des fichiers d'extensions..."
@@ -82,7 +82,7 @@ backup_extensions() {
else else
print_warning "Répertoire des extensions non trouvé: $EXTENSIONS_DIR" print_warning "Répertoire des extensions non trouvé: $EXTENSIONS_DIR"
fi fi
# Sauvegarder les paramètres des extensions # Sauvegarder les paramètres des extensions
print_info "Sauvegarde des paramètres des extensions..." print_info "Sauvegarde des paramètres des extensions..."
dconf dump /org/gnome/shell/extensions/ > "$SETTINGS_FILE" 2>/dev/null dconf dump /org/gnome/shell/extensions/ > "$SETTINGS_FILE" 2>/dev/null
@@ -91,7 +91,7 @@ backup_extensions() {
else else
print_warning "Aucun paramètre d'extension à sauvegarder" print_warning "Aucun paramètre d'extension à sauvegarder"
fi fi
# Créer une liste des extensions activées # Créer une liste des extensions activées
print_info "Sauvegarde de la liste des extensions activées..." print_info "Sauvegarde de la liste des extensions activées..."
gsettings get org.gnome.shell enabled-extensions > "$EXTENSIONS_LIST" 2>/dev/null gsettings get org.gnome.shell enabled-extensions > "$EXTENSIONS_LIST" 2>/dev/null
@@ -100,7 +100,7 @@ backup_extensions() {
else else
print_warning "Impossible de récupérer la liste des extensions activées" print_warning "Impossible de récupérer la liste des extensions activées"
fi fi
# Créer un fichier de métadonnées # Créer un fichier de métadonnées
METADATA_FILE="$BACKUP_DIR/backup-metadata-$BACKUP_DATE.txt" METADATA_FILE="$BACKUP_DIR/backup-metadata-$BACKUP_DATE.txt"
{ {
@@ -115,7 +115,7 @@ backup_extensions() {
echo "- Paramètres: $(basename "$SETTINGS_FILE")" echo "- Paramètres: $(basename "$SETTINGS_FILE")"
echo "- Liste: $(basename "$EXTENSIONS_LIST")" echo "- Liste: $(basename "$EXTENSIONS_LIST")"
} > "$METADATA_FILE" } > "$METADATA_FILE"
print_success "Sauvegarde terminée! Fichiers dans: $BACKUP_DIR" print_success "Sauvegarde terminée! Fichiers dans: $BACKUP_DIR"
print_info "Métadonnées sauvegardées dans: $METADATA_FILE" print_info "Métadonnées sauvegardées dans: $METADATA_FILE"
} }
@@ -123,13 +123,13 @@ backup_extensions() {
# Fonction de restauration # Fonction de restauration
restore_extensions() { restore_extensions() {
print_info "Restauration des extensions GNOME..." print_info "Restauration des extensions GNOME..."
# Lister les sauvegardes disponibles # Lister les sauvegardes disponibles
if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A "$BACKUP_DIR"/*.tar.gz 2>/dev/null)" ]; then if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A "$BACKUP_DIR"/*.tar.gz 2>/dev/null)" ]; then
print_error "Aucune sauvegarde trouvée dans $BACKUP_DIR" print_error "Aucune sauvegarde trouvée dans $BACKUP_DIR"
exit 1 exit 1
fi fi
echo "Sauvegardes disponibles:" echo "Sauvegardes disponibles:"
select backup_file in "$BACKUP_DIR"/*.tar.gz; do select backup_file in "$BACKUP_DIR"/*.tar.gz; do
if [ -n "$backup_file" ]; then if [ -n "$backup_file" ]; then
@@ -138,21 +138,21 @@ restore_extensions() {
print_error "Sélection invalide" print_error "Sélection invalide"
fi fi
done done
# Extraire la date de la sauvegarde sélectionnée # Extraire la date de la sauvegarde sélectionnée
BACKUP_DATE=$(basename "$backup_file" | sed 's/gnome-extensions-\(.*\)\.tar\.gz/\1/') BACKUP_DATE=$(basename "$backup_file" | sed 's/gnome-extensions-\(.*\)\.tar\.gz/\1/')
SETTINGS_FILE="$BACKUP_DIR/gnome-settings-$BACKUP_DATE.dconf" SETTINGS_FILE="$BACKUP_DIR/gnome-settings-$BACKUP_DATE.dconf"
EXTENSIONS_LIST="$BACKUP_DIR/extensions-list-$BACKUP_DATE.txt" EXTENSIONS_LIST="$BACKUP_DIR/extensions-list-$BACKUP_DATE.txt"
print_info "Restauration depuis: $(basename "$backup_file")" print_info "Restauration depuis: $(basename "$backup_file")"
# Demander confirmation # Demander confirmation
read -p "Voulez-vous continuer avec la restauration? (y/N): " confirm read -p "Voulez-vous continuer avec la restauration? (y/N): " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
print_info "Restauration annulée" print_info "Restauration annulée"
exit 0 exit 0
fi fi
# Créer une sauvegarde de sécurité des extensions actuelles # Créer une sauvegarde de sécurité des extensions actuelles
if [ -d "$EXTENSIONS_DIR" ]; then if [ -d "$EXTENSIONS_DIR" ]; then
print_info "Création d'une sauvegarde de sécurité..." print_info "Création d'une sauvegarde de sécurité..."
@@ -160,7 +160,7 @@ restore_extensions() {
tar -czf "$SAFETY_BACKUP" -C "$HOME/.local/share/gnome-shell" extensions/ 2>/dev/null tar -czf "$SAFETY_BACKUP" -C "$HOME/.local/share/gnome-shell" extensions/ 2>/dev/null
print_success "Sauvegarde de sécurité créée: $SAFETY_BACKUP" print_success "Sauvegarde de sécurité créée: $SAFETY_BACKUP"
fi fi
# Restaurer les extensions # Restaurer les extensions
print_info "Restauration des fichiers d'extensions..." print_info "Restauration des fichiers d'extensions..."
mkdir -p "$HOME/.local/share/gnome-shell" mkdir -p "$HOME/.local/share/gnome-shell"
@@ -170,7 +170,7 @@ restore_extensions() {
else else
print_error "Erreur lors de la restauration des extensions" print_error "Erreur lors de la restauration des extensions"
fi fi
# Restaurer les paramètres # Restaurer les paramètres
if [ -f "$SETTINGS_FILE" ] && [ -s "$SETTINGS_FILE" ]; then if [ -f "$SETTINGS_FILE" ] && [ -s "$SETTINGS_FILE" ]; then
print_info "Restauration des paramètres..." print_info "Restauration des paramètres..."
@@ -179,7 +179,7 @@ restore_extensions() {
else else
print_warning "Fichier de paramètres non trouvé ou vide" print_warning "Fichier de paramètres non trouvé ou vide"
fi fi
# Restaurer la liste des extensions activées # Restaurer la liste des extensions activées
if [ -f "$EXTENSIONS_LIST" ] && [ -s "$EXTENSIONS_LIST" ]; then if [ -f "$EXTENSIONS_LIST" ] && [ -s "$EXTENSIONS_LIST" ]; then
print_info "Restauration de la liste des extensions activées..." print_info "Restauration de la liste des extensions activées..."
@@ -189,7 +189,7 @@ restore_extensions() {
else else
print_warning "Liste des extensions non trouvée" print_warning "Liste des extensions non trouvée"
fi fi
print_success "Restauration terminée!" print_success "Restauration terminée!"
print_warning "Vous devrez peut-être redémarrer GNOME Shell (Alt+F2, tapez 'r') ou vous déconnecter/reconnecter" print_warning "Vous devrez peut-être redémarrer GNOME Shell (Alt+F2, tapez 'r') ou vous déconnecter/reconnecter"
} }
@@ -197,12 +197,12 @@ restore_extensions() {
# Fonction pour lister les sauvegardes # Fonction pour lister les sauvegardes
list_backups() { list_backups() {
print_info "Sauvegardes disponibles:" print_info "Sauvegardes disponibles:"
if [ ! -d "$BACKUP_DIR" ]; then if [ ! -d "$BACKUP_DIR" ]; then
print_warning "Répertoire de sauvegarde non trouvé: $BACKUP_DIR" print_warning "Répertoire de sauvegarde non trouvé: $BACKUP_DIR"
return return
fi fi
for backup in "$BACKUP_DIR"/gnome-extensions-*.tar.gz; do for backup in "$BACKUP_DIR"/gnome-extensions-*.tar.gz; do
if [ -f "$backup" ]; then if [ -f "$backup" ]; then
filename=$(basename "$backup") filename=$(basename "$backup")
@@ -210,7 +210,7 @@ list_backups() {
readable_date=$(echo "$date_part" | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)_\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\3\/\2\/\1 \4:\5:\6/') readable_date=$(echo "$date_part" | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)_\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\3\/\2\/\1 \4:\5:\6/')
size=$(du -h "$backup" | cut -f1) size=$(du -h "$backup" | cut -f1)
echo " - $filename (Taille: $size, Date: $readable_date)" echo " - $filename (Taille: $size, Date: $readable_date)"
# Vérifier les fichiers associés # Vérifier les fichiers associés
metadata_file="$BACKUP_DIR/backup-metadata-$date_part.txt" metadata_file="$BACKUP_DIR/backup-metadata-$date_part.txt"
if [ -f "$metadata_file" ]; then if [ -f "$metadata_file" ]; then
@@ -218,7 +218,7 @@ list_backups() {
fi fi
fi fi
done done
if [ -z "$(ls -A "$BACKUP_DIR"/gnome-extensions-*.tar.gz 2>/dev/null)" ]; then if [ -z "$(ls -A "$BACKUP_DIR"/gnome-extensions-*.tar.gz 2>/dev/null)" ]; then
print_warning "Aucune sauvegarde trouvée" print_warning "Aucune sauvegarde trouvée"
fi fi
@@ -227,15 +227,15 @@ list_backups() {
# Fonction pour nettoyer les anciennes sauvegardes # Fonction pour nettoyer les anciennes sauvegardes
cleanup_backups() { cleanup_backups() {
print_info "Nettoyage des anciennes sauvegardes..." print_info "Nettoyage des anciennes sauvegardes..."
if [ ! -d "$BACKUP_DIR" ]; then if [ ! -d "$BACKUP_DIR" ]; then
print_warning "Répertoire de sauvegarde non trouvé" print_warning "Répertoire de sauvegarde non trouvé"
return return
fi fi
read -p "Combien de sauvegardes souhaitez-vous conserver? (défaut: 5): " keep_count read -p "Combien de sauvegardes souhaitez-vous conserver? (défaut: 5): " keep_count
keep_count=${keep_count:-5} keep_count=${keep_count:-5}
# Supprimer les anciennes sauvegardes (garder les plus récentes) # Supprimer les anciennes sauvegardes (garder les plus récentes)
ls -t "$BACKUP_DIR"/gnome-extensions-*.tar.gz 2>/dev/null | tail -n +$((keep_count + 1)) | while read -r old_backup; do ls -t "$BACKUP_DIR"/gnome-extensions-*.tar.gz 2>/dev/null | tail -n +$((keep_count + 1)) | while read -r old_backup; do
if [ -f "$old_backup" ]; then if [ -f "$old_backup" ]; then
@@ -247,7 +247,7 @@ cleanup_backups() {
rm -f "$BACKUP_DIR/backup-metadata-$date_part.txt" rm -f "$BACKUP_DIR/backup-metadata-$date_part.txt"
fi fi
done done
print_success "Nettoyage terminé" print_success "Nettoyage terminé"
} }
@@ -297,7 +297,7 @@ interactive_menu() {
while true; do while true; do
show_menu show_menu
read -p "Votre choix (1-6): " choice read -p "Votre choix (1-6): " choice
case $choice in case $choice in
1) 1)
check_requirements && backup_extensions check_requirements && backup_extensions
@@ -358,4 +358,4 @@ main() {
esac esac
} }
main "$@" main "$@"