Corrections bugs désinstallations et améliorations UI/UX

This commit is contained in:
2025-08-30 01:55:37 +02:00
parent 9d68a5892c
commit f8956776a3

View File

@@ -198,8 +198,6 @@ check_sudo_password() {
# Fonction pour demander et stocker le mot de passe sudo globalement # Fonction pour demander et stocker le mot de passe sudo globalement
get_global_sudo_password() { get_global_sudo_password() {
local app_list="$1"
# Si le mot de passe est déjà stocké et valide, ne pas le redemander # Si le mot de passe est déjà stocké et valide, ne pas le redemander
if [ -n "$GLOBAL_SUDO_PASSWORD" ]; then if [ -n "$GLOBAL_SUDO_PASSWORD" ]; then
if check_sudo_password "$GLOBAL_SUDO_PASSWORD"; then if check_sudo_password "$GLOBAL_SUDO_PASSWORD"; then
@@ -208,7 +206,7 @@ get_global_sudo_password() {
fi fi
# Demander le mot de passe sudo pour toutes les installations # 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 if [ $? -eq 1 ]; then
return 1 return 1
@@ -259,10 +257,6 @@ start_batch_install() {
log_info "Mode installation groupée activé pour $app_count applications" 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() { update_batch_progress() {
@@ -411,11 +405,12 @@ show_unified_selection() {
--title="Debian Gaming Deployment Tool" \ --title="Debian Gaming Deployment Tool" \
--text="Sélectionnez les applications puis choisissez l'action :" \ --text="Sélectionnez les applications puis choisissez l'action :" \
--column="Sélection" --column="Application" --column="Type" --column="Description" \ --column="Sélection" --column="Application" --column="Type" --column="Description" \
--width=1000 --height=600 \ --width=1000 --height=650 \
--ok-label="Installer" \ --ok-label="Installer" \
--extra-button="Désinstaller" \ --extra-button="Désinstaller" \
--cancel-label="Annuler" \ --cancel-label="Annuler" \
--separator="|" \ --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 "nvidia" "APT" "💻 NVIDIA + CUDA - Pilotes graphiques professionnels" \
FALSE "flatpak" "APT" "📦 Flatpak + Flathub - Gestionnaire d'applications universelles" \ FALSE "flatpak" "APT" "📦 Flatpak + Flathub - Gestionnaire d'applications universelles" \
FALSE "steam" "APT" "🎮 Steam - Plateforme de jeux numériques Valve" \ 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) selection=$(show_unified_selection)
exit_code=$? 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) # 0 = Installer (bouton OK)
# 1 = Désinstaller (bouton extra) # 1 = Désinstaller (bouton extra)
# autres = Annuler # autres = Annuler
@@ -3229,15 +3224,28 @@ if [ -z "$selection" ]; then
exit 0 exit 0
fi fi
# Traiter la sélection selon le bouton cliqué # Traiter la sélection
IFS='|' read -ra SELECTED <<< "$selection" 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) # Mode désinstallation (bouton extra)
# Créer la liste des composants pour confirmation # Créer la liste des composants pour confirmation
uninstall_display="" uninstall_display=""
for component in "${SELECTED[@]}"; do 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 case $component in
"steam") uninstall_display="$uninstall_display\n• Steam" ;; "steam") uninstall_display="$uninstall_display\n• Steam" ;;
"protonup") uninstall_display="$uninstall_display\n• ProtonUp-Qt" ;; "protonup") uninstall_display="$uninstall_display\n• ProtonUp-Qt" ;;
@@ -3259,7 +3267,7 @@ if [ $exit_code -eq 1 ]; then
done done
# Demander confirmation globale une seule fois # 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 exit 0
fi fi
@@ -3289,6 +3297,11 @@ if [ $exit_code -eq 1 ]; then
# Traiter les sélections de désinstallation # Traiter les sélections de désinstallation
for component in "${SELECTED[@]}"; do 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" log_info "Traitement du composant: $component"
case $component in case $component in
"steam") "steam")
@@ -3447,6 +3460,11 @@ else
# Créer la liste des applications pour confirmation # Créer la liste des applications pour confirmation
install_display="" install_display=""
for component in "${SELECTED[@]}"; do 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 case $component in
"steam") install_display="$install_display\n• Steam" ;; "steam") install_display="$install_display\n• Steam" ;;
"protonup") install_display="$install_display\n• ProtonUp-Qt" ;; "protonup") install_display="$install_display\n• ProtonUp-Qt" ;;
@@ -3467,8 +3485,13 @@ else
esac esac
done 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 # 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 exit 0
fi fi
@@ -3476,14 +3499,15 @@ else
if [ ${#SELECTED[@]} -gt 1 ]; then if [ ${#SELECTED[@]} -gt 1 ]; then
start_batch_install ${#SELECTED[@]} "$install_display" 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 fi
# Traiter les sélections d'installation # Traiter les sélections d'installation
for component in "${SELECTED[@]}"; do 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 case $component in
"steam") "steam")
install_steam install_steam