From f8956776a35effb7570ea5e3c9f03ec544f46d07 Mon Sep 17 00:00:00 2001 From: skylanix Date: Sat, 30 Aug 2025 01:55:37 +0200 Subject: [PATCH] =?UTF-8?q?Corrections=20bugs=20d=C3=A9sinstallations=20et?= =?UTF-8?q?=20am=C3=A9liorations=20UI/UX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files_to_inject/preseeds/install_gaming.sh | 58 +++++++++++++++------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/files_to_inject/preseeds/install_gaming.sh b/files_to_inject/preseeds/install_gaming.sh index 1311d88..09bb90b 100755 --- a/files_to_inject/preseeds/install_gaming.sh +++ b/files_to_inject/preseeds/install_gaming.sh @@ -198,8 +198,6 @@ check_sudo_password() { # Fonction pour demander et stocker le mot de passe sudo globalement get_global_sudo_password() { - local app_list="$1" - # Si le mot de passe est déjà stocké et valide, ne pas le redemander if [ -n "$GLOBAL_SUDO_PASSWORD" ]; then if check_sudo_password "$GLOBAL_SUDO_PASSWORD"; then @@ -208,7 +206,7 @@ get_global_sudo_password() { fi # Demander le mot de passe sudo pour toutes les installations - GLOBAL_SUDO_PASSWORD=$(zenity 2>/dev/null --password --title="Authentification - Debian Gaming Deployment Tool" --text="Mot de passe administrateur requis pour l'installation :\n$app_list") + GLOBAL_SUDO_PASSWORD=$(zenity 2>/dev/null --password --title="Authentification - Debian Gaming Deployment Tool" --text="Mot de passe administrateur requis pour procéder aux installations.") if [ $? -eq 1 ]; then return 1 @@ -259,10 +257,6 @@ start_batch_install() { log_info "Mode installation groupée activé pour $app_count applications" - # Afficher une notification de début au lieu d'une barre de progression complexe - zenity 2>/dev/null --info --timeout=3 \ - --title="Debian Gaming Deployment Tool" \ - --text="Installation de $app_count applications en cours...\n\nApplications sélectionnées:$app_list" & } update_batch_progress() { @@ -411,11 +405,12 @@ show_unified_selection() { --title="Debian Gaming Deployment Tool" \ --text="Sélectionnez les applications puis choisissez l'action :" \ --column="Sélection" --column="Application" --column="Type" --column="Description" \ - --width=1000 --height=600 \ + --width=1000 --height=650 \ --ok-label="Installer" \ --extra-button="Désinstaller" \ --cancel-label="Annuler" \ --separator="|" \ + FALSE "ACTION_UNINSTALL" "SPECIAL" "🗑️ MODE DÉSINSTALLATION - Cochez ceci pour désinstaller au lieu d'installer" \ FALSE "nvidia" "APT" "💻 NVIDIA + CUDA - Pilotes graphiques professionnels" \ FALSE "flatpak" "APT" "📦 Flatpak + Flathub - Gestionnaire d'applications universelles" \ FALSE "steam" "APT" "🎮 Steam - Plateforme de jeux numériques Valve" \ @@ -3213,7 +3208,7 @@ echo "Fichier de log: $(pwd)/$(basename "$LOG_FILE")" >&2 selection=$(show_unified_selection) exit_code=$? -# Déterminer l'action selon le code de retour +# Déterminer l'action selon le code de retour et la sélection # 0 = Installer (bouton OK) # 1 = Désinstaller (bouton extra) # autres = Annuler @@ -3229,15 +3224,28 @@ if [ -z "$selection" ]; then exit 0 fi -# Traiter la sélection selon le bouton cliqué +# Traiter la sélection IFS='|' read -ra SELECTED <<< "$selection" +# Vérifier si le mode désinstallation est demandé via la checkbox +uninstall_mode=false +if [[ " ${SELECTED[*]} " =~ " ACTION_UNINSTALL " ]]; then + uninstall_mode=true + # Retirer ACTION_UNINSTALL de la liste + SELECTED=("${SELECTED[@]/ACTION_UNINSTALL}") +fi -if [ $exit_code -eq 1 ]; then +# Déterminer le mode final +if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then # Mode désinstallation (bouton extra) # Créer la liste des composants pour confirmation uninstall_display="" for component in "${SELECTED[@]}"; do + # Ignorer les éléments qui ne sont pas des applications (boutons, etc.) + case $component in + "Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;; + esac + case $component in "steam") uninstall_display="$uninstall_display\n• Steam" ;; "protonup") uninstall_display="$uninstall_display\n• ProtonUp-Qt" ;; @@ -3259,7 +3267,7 @@ if [ $exit_code -eq 1 ]; then done # Demander confirmation globale une seule fois - if ! zenity 2>/dev/null --question --title="Confirmation de désinstallation" --text="Êtes-vous sûr de vouloir désinstaller les composants suivants ?$uninstall_display"; then + if ! zenity 2>/dev/null --question --title="Confirmation de désinstallation" --text="Récapitulatif des désinstallations :$uninstall_display\n\nVoulez-vous procéder à la désinstallation de ces composants ?" --width=400; then exit 0 fi @@ -3289,6 +3297,11 @@ if [ $exit_code -eq 1 ]; then # Traiter les sélections de désinstallation for component in "${SELECTED[@]}"; do + # Ignorer les éléments qui ne sont pas des applications (boutons, etc.) + case $component in + "Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;; + esac + log_info "Traitement du composant: $component" case $component in "steam") @@ -3447,6 +3460,11 @@ else # Créer la liste des applications pour confirmation install_display="" for component in "${SELECTED[@]}"; do + # Ignorer les éléments qui ne sont pas des applications (boutons, etc.) + case $component in + "Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;; + esac + case $component in "steam") install_display="$install_display\n• Steam" ;; "protonup") install_display="$install_display\n• ProtonUp-Qt" ;; @@ -3467,8 +3485,13 @@ else esac done + # Afficher le récapitulatif et demander confirmation + if ! zenity 2>/dev/null --question --title="Confirmation d'installation" --text="Récapitulatif des installations :\n$install_display\n\nVoulez-vous procéder à l'installation de ces applications ?" --width=400; then + exit 0 + fi + # Demander le mot de passe sudo une seule fois pour toutes les installations - if ! get_global_sudo_password "$install_display"; then + if ! get_global_sudo_password; then exit 0 fi @@ -3476,14 +3499,15 @@ else if [ ${#SELECTED[@]} -gt 1 ]; then start_batch_install ${#SELECTED[@]} "$install_display" - # Afficher une notification au début - zenity 2>/dev/null --info --timeout=5 \ - --title="Debian Gaming Deployment Tool - Installation Multiple" \ - --text="Installation de ${#SELECTED[@]} applications en cours...\n\nCeci peut prendre plusieurs minutes.\nVeuillez patienter..." & fi # Traiter les sélections d'installation for component in "${SELECTED[@]}"; do + # Ignorer les éléments qui ne sont pas des applications (boutons, etc.) + case $component in + "Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;; + esac + case $component in "steam") install_steam