Actualiser gnome_extension.sh
This commit is contained in:
@@ -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 "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user