Divers améliorations

This commit is contained in:
sky
2025-09-11 03:39:26 +02:00
parent f8956776a3
commit 6fa530e297
3 changed files with 183 additions and 390 deletions

View File

@@ -1,6 +1,3 @@
# Locale et langue par défaut : français suisse
d-i debian-installer/locale string fr_CH.UTF-8
# Configuration réseau automatique
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string skylanix
@@ -36,38 +33,52 @@ tasksel tasksel/first multiselect minimal
# Paquets essentiels Skylanix : environnement GNOME et outils système
d-i pkgsel/include string \
gnome-core \
gnome-tweaks \
vim \
fish \
git \
wget \
curl \
gpg \
htop \
btop \
fastfetch \
flatpak \
pavucontrol \
easyeffects \
gnome-software-plugin-flatpak \
ffmpeg \
libavcodec-extra \
libavformat-extra \
spice-vdagent \
cmatrix
dkms \
libdw-dev \
clang \
lld \
llvm
# gnome: environnement de bureau GNOME
# gnome-core: Environnement de bureau GNOME
# gnome-tweaks: Outil de personnalisation GNOME
# vim: Éditeur de texte
# fish: Shell moderne
# git: Gestionnaire de versions
# wget: Téléchargeur HTTP/FTP
# curl: Client HTTP/FTP
# gpg: Chiffrement/signatures
# htop: Moniteur système interactif
# btop: Moniteur système moderne
# fastfetch: Info système colorée
# flatpak: Gestionnaire d'apps universelles
# pavucontrol: Contrôleur audio PulseAudio
# easyeffects: Effets audio avancés
# gnome-software-plugin-flatpak: Plugin Flatpak pour GNOME Software
# ffmpeg: Codecs audio/vidéo
# libavcodec-extra: Codecs supplémentaires
# libavformat-extra: Formats multimédias supplémentaires
# spice-vdagent: Agent SPICE pour machine virtuelle
# cmatrix: Effet Matrix dans terminal
# dkms: Système de modules kernel dynamiques
# libdw-dev: Bibliothèque de débogage DWARF
# clang: Compilateur C/C++/Objective-C
# lld: Éditeur de liens LLVM
# llvm: Infrastructure de compilation modulaire
# Installation GRUB avec support multi-OS
d-i grub-installer/only_debian boolean true
@@ -78,7 +89,7 @@ d-i grub-installer/bootdev string default
# Configuration post-installation : suppression navigateurs par défaut, installation Firefox Mozilla, kernel XanMod et configuration système
d-i preseed/late_command string \
in-target apt-get remove --purge -y firefox-esr konqueror ; \
in-target apt-get remove --purge -y firefox-esr ; \
in-target mkdir -p /etc/apt/keyrings ; \
in-target timeout 30 wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O /etc/apt/keyrings/packages.mozilla.org.asc ; \
in-target sh -c 'echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" > /etc/apt/sources.list.d/mozilla.list' ; \
@@ -94,13 +105,20 @@ d-i preseed/late_command string \
sh -c 'cp /cdrom/preseeds/install_gaming.sh /target/usr/bin/install_gaming.sh ; \
chmod +x /target/usr/bin/install_gaming.sh' ; \
sh -c 'cp "/cdrom/preseeds/Debian Gaming Deployment Tool.desktop" /target/usr/share/applications/ ; \
chmod 644 /target/usr/share/applications/"Debian Gaming Deployment Tool.desktop"' ; \
sh -c 'mkdir -p /target/etc/apt/keyrings' ; \
sh -c 'mkdir -p /target/etc/apt/sources.list.d' ; \
sh -c 'wget -qO /target/etc/apt/keyrings/xanmod-archive-keyring.gpg https://dl.xanmod.org/archive.key' ; \
sh -c 'echo "deb [signed-by=/etc/apt/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org trixie main" > /target/etc/apt/sources.list.d/xanmod.list' ; \
chmod 644 /target/usr/share/applications/"Debian Gaming Deployment Tool.desktop"' ; \ in-target mkdir -p /etc/apt/keyrings ; \
in-target mkdir -p /etc/apt/sources.list.d ; \
in-target wget -qO /etc/apt/keyrings/xanmod-archive-keyring.gpg https://dl.xanmod.org/archive.key ; \
in-target sh -c 'echo "deb [signed-by=/etc/apt/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org trixie main non-free" > /etc/apt/sources.list.d/xanmod.list' ; \
in-target apt-get update ; \
in-target apt-get install -y linux-xanmod-x64v3 ;
in-target apt-get install -y linux-xanmod-x64v3 ; \
in-target mkdir -p /etc/skel/.config/autostart ; \
in-target sh -c 'printf "[Desktop Entry]\nType=Application\nName=Skylanix Setup\nExec=sh -c \"gsettings set org.gnome.desktop.wm.preferences button-layout \":minimize,maximize,close\" && rm ~/.config/autostart/skylanix-setup.desktop\"\nNoDisplay=true\nStartupNotify=false\n" > /etc/skel/.config/autostart/skylanix-setup.desktop' ; \
in-target mkdir -p /etc/dconf/profile ; \
in-target sh -c 'echo "user-db:user\nsystem-db:local" > /etc/dconf/profile/user' ; \
in-target mkdir -p /etc/dconf/db/local.d ; \
in-target sh -c 'printf "[org/gnome/desktop/wm/preferences]\nbutton-layout=\":minimize,maximize,close\"\n" > /etc/dconf/db/local.d/00-skylanix-wm' ; \
in-target dconf update ;
in-target sh -c 'if lspci | grep -i nvidia | grep -E "(GTX 16[0-9]{2}|RTX [2-4][0-9]{3}|RTX [5-9][0-9]{3}|Tesla|Quadro.*T[0-9]{3,4}|A[0-9]{2,4})" > /dev/null; then echo "Carte NVIDIA compatible détectée"; lspci | grep -i nvidia; echo "Installation des drivers NVIDIA 580 open source..."; in-target apt-get update && in-target apt-get install -y nvidia-driver-580-open; echo "Installation terminée. Redémarrage requis."; else echo "Aucune carte NVIDIA série 1600+ détectée"; lspci | grep -i vga; fi' ;
# Finalisation : redémarrage automatique
d-i finish-install/reboot_in_progress note

View File

@@ -0,0 +1,8 @@
=== Debian Gaming Deployment Tool Log - Démarré le mer 10 sep 2025 21:21:44 CEST ===
Fichier de log: ./gaming_installer.log
Utilisateur: sky
Répertoire de travail: /home/sky/Documents/gitea/custom-debian-iso/files_to_inject/preseeds
[2025-09-10 21:21:44] INFO: Script démarré avec succès
[2025-09-10 21:21:44] INFO: Vérification du système de logging
[2025-09-10 21:21:44] INFO: Fichier de log créé dans: /home/sky/Documents/gitea/custom-debian-iso/files_to_inject/preseeds/gaming_installer.log

View File

@@ -123,9 +123,6 @@ show_installation_summary() {
summary_text+="\n📝 Note : Redémarrage de session recommandé pour Flatpak\n"
fi
if [[ " ${INSTALLED_APPS[*]} " =~ " Drivers NVIDIA " ]]; then
summary_text+="\n🔄 Important : Redémarrage système requis pour les drivers NVIDIA\n"
fi
zenity 2>/dev/null --info --title="Installation achevée" --text="$summary_text" --width=500 --extra-button="Voir les logs"
if [ $? -eq 1 ]; then
@@ -341,6 +338,72 @@ show_progress() {
fi
}
# Fonction pour créer une progression continue pendant l'exécution d'une commande
run_with_continuous_progress() {
local title="$1"
local message="$2"
local command="$3"
if [ "$BATCH_INSTALL_MODE" = "true" ]; then
# En mode groupé, pas de barre de progression individuelle
log_info "[$BATCH_CURRENT_APP/$BATCH_TOTAL_APPS] $title: $message"
eval "$command"
return $?
fi
# Créer un pipe nommé pour la communication
local progress_pipe=$(mktemp -u)
mkfifo "$progress_pipe"
# Fonction de progression continue en arrière-plan
continuous_progress() {
local percent=0
local direction=1
while true; do
echo "$percent"
echo "# $message"
# Augmenter ou diminuer le pourcentage
percent=$((percent + direction * 2))
# Inverser la direction aux extrêmes
if [ $percent -ge 95 ]; then
direction=-1
elif [ $percent -le 5 ]; then
direction=1
fi
sleep 0.1
done > "$progress_pipe" &
local progress_pid=$!
# Afficher la barre de progression
zenity 2>/dev/null --progress \
--title="$title" \
--text="$message" \
--percentage=0 \
--width=400 \
--auto-close < "$progress_pipe" &
local zenity_pid=$!
# Exécuter la commande
eval "$command" > /dev/null 2>&1
local result=$?
# Nettoyer les processus en arrière-plan
kill $progress_pid 2>/dev/null || true
kill $zenity_pid 2>/dev/null || true
rm -f "$progress_pipe"
return $result
}
continuous_progress
}
# Fonction wrapper pour zenity 2>/dev/null progress en mode individuel
run_individual_progress() {
local app_name="$1"
@@ -376,7 +439,6 @@ ensure_flathub_sources() {
# Vérifier si Flatpak est installé
if ! command -v flatpak &> /dev/null; then
log_info "Flatpak n'est pas installé, installation en cours..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y flatpak >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "flatpak" "installation"; then
log_error "Échec de l'installation de Flatpak"
@@ -410,15 +472,13 @@ show_unified_selection() {
--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" \
FALSE "heroic" "GitHub" "🎮 Heroic Game Launcher - Client Epic Games et GOG" \
FALSE "lutris" "APT" "🎮 Lutris - Gestionnaire de bibliothèque de jeux" \
FALSE "retroarch" "Flatpak" "🕹️ RetroArch - Plateforme d'émulation multi-systèmes" \
FALSE "goverlay" "APT" "⚡ GOverlay - Monitoring des performances (FPS, CPU, GPU)" \
FALSE "protonup" "Flatpak" "🔄 ProtonUp-Qt - Gestionnaire de versions Proton" \
FALSE "proton plus" "Flatpak" "🔄 ProtonUp-Qt - Gestionnaire de versions Proton" \
FALSE "wine" "APT" "🍷 Wine + Winetricks - Couche de compatibilité Windows" \
FALSE "bottles" "Flatpak" "🍷 Bottles - Gestionnaire Wine moderne" \
FALSE "discord" "Flatpak" "💬 Discord - Plateforme de communication gaming" \
@@ -450,41 +510,30 @@ install_steam() {
# Fonction interne pour l'installation
install_steam_steps() {
show_progress "Steam" 10 "Mise à jour des sources..."
log_info "Début mise à jour des sources pour Steam"
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
local result=$?
log_info "Résultat apt-get update: $result"
if ! check_apt_success $result "sources" "mise à jour"; then
log_error "Échec mise à jour des sources pour Steam"
if ! run_with_continuous_progress "Steam" "Installation des dépendances..." \
"echo '$password' | timeout $TIMEOUT_APT sudo -S apt-get install -y wget curl >> '$LOG_FILE' 2>&1"; then
log_error "Échec installation dépendances Steam"
return 1
fi
show_progress "Steam" 30 "Installation des dépendances..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get install -y wget curl >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "wget curl" "installation"; then
if ! run_with_continuous_progress "Steam" "Ajout de l'architecture 32-bit..." \
"echo '$password' | timeout $TIMEOUT_APT sudo -S dpkg --add-architecture i386 >> '$LOG_FILE' 2>&1"; then
log_error "Échec ajout architecture i386 Steam"
return 1
fi
show_progress "Steam" 50 "Ajout de l'architecture 32-bit..."
echo "$password" | timeout $TIMEOUT_APT sudo -S dpkg --add-architecture i386 >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "architecture i386" "ajout"; then
if ! run_with_continuous_progress "Steam" "Mise à jour après ajout architecture..." \
"echo '$password' | timeout $TIMEOUT_APT sudo -S apt-get update >> '$LOG_FILE' 2>&1"; then
log_error "Échec mise à jour sources Steam"
return 1
fi
show_progress "Steam" 70 "Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
if ! run_with_continuous_progress "Steam" "Installation de steam-installer..." \
"echo '$password' | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y steam-installer >> '$LOG_FILE' 2>&1"; then
log_error "Échec installation steam-installer"
return 1
fi
show_progress "Steam" 90 "Installation de steam-installer..."
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y steam-installer >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "steam-installer" "installation"; then
return 1
fi
show_progress "Steam" 100 "Vérification de l'installation..."
return 0
}
@@ -531,11 +580,11 @@ install_steam() {
}
# Fonction d'installation ProtonUp-Qt
install_protonup() {
install_proton_plus() {
log_info "Début de l'installation de ProtonUp-Qt"
# Vérifier si ProtonUp-Qt est déjà installé
if flatpak list | grep -q "net.davidotek.pupgui2"; then
if flatpak list | grep -q "com.vysp3r.ProtonPlus"; then
log_info "ProtonUp-Qt déjà installé"
zenity 2>/dev/null --info --title="Composant déjà présent" --text="ProtonUp-Qt est déjà installé sur le système."
return
@@ -546,37 +595,36 @@ install_protonup() {
return
fi
(
echo "40" ; echo "# Vérification des sources Flathub..."
# Installation avec barres de progression continues
if [ "$BATCH_INSTALL_MODE" = "true" ]; then
# Mode groupé: installation directe sans barres individuelles
if ! ensure_flathub_sources; then
echo "# Erreur lors de la configuration de Flathub"
exit 1
fi
echo "70" ; echo "# Installation de ProtonUp-Qt via Flatpak..."
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S flatpak install -y flathub net.davidotek.pupgui2 >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
log_error "Échec de l'installation de ProtonUp-Qt"
echo "# Erreur lors de l'installation de ProtonUp-Qt"
exit 1
fi
echo "100" ; echo "# Vérification de l'installation..."
) | zenity 2>/dev/null --progress \
--title="Installation de ProtonUp-Qt" \
--text="Initialisation..." \
--percentage=0 \
--width=400 \
--auto-close
# Vérifier le code de sortie du processus
if [ ${PIPESTATUS[0]} -ne 0 ]; then
show_error_logs "Échec de l'installation de ProtonUp-Qt"
log_error "Échec de la configuration de Flathub pour ProtonUp-Qt"
return
fi
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S flatpak install -y flathub com.vysp3r.ProtonPlus >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
log_error "Échec de l'installation de ProtonUp-Qt"
return
fi
else
# Mode individuel: utiliser les barres de progression continues
if ! run_with_continuous_progress "ProtonUp-Qt" "Vérification des sources Flathub..." \
"ensure_flathub_sources"; then
log_error "Échec de la configuration de Flathub pour ProtonUp-Qt"
return
fi
if ! run_with_continuous_progress "ProtonUp-Qt" "Installation de ProtonUp-Qt via Flatpak..." \
"echo '$password' | timeout $TIMEOUT_INSTALL sudo -S flatpak install -y flathub com.vysp3r.ProtonPlus >> '$LOG_FILE' 2>&1"; then
log_error "Échec de l'installation de ProtonUp-Qt"
return
fi
fi
# Vérifier si l'installation a réussi
if flatpak list | grep -q "net.davidotek.pupgui2"; then
if flatpak list | grep -q "com.vysp3r.ProtonPlus"; then
log_info "Installation ProtonUp-Qt réussie"
INSTALLED_APPS+=("ProtonUp-Qt")
INSTALLATION_MESSAGES+=("ProtonUp-Qt a été installé avec succès via Flatpak")
@@ -603,30 +651,23 @@ install_lutris() {
fi
(
echo "10" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
echo "20" ; echo "# Installation des dépendances..."
echo "15" ; echo "# Installation des dépendances..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get install -y wget curl >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "dépendances" "installation"; then
echo "# Erreur lors de l'installation des dépendances"
exit 1
fi
echo "50" ; echo "# Ajout de l'architecture 32-bit..."
echo "35" ; echo "# Ajout de l'architecture 32-bit..."
echo "$password" | timeout $TIMEOUT_APT sudo -S dpkg --add-architecture i386 >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "architecture i386" "ajout"; then
echo "# Erreur lors de l'ajout de l'architecture i386"
exit 1
fi
echo "70" ; echo "# Mise à jour des sources..."
echo "55" ; echo "# Mise à jour après ajout architecture..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
if ! check_apt_success $? "sources après i386" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
@@ -739,13 +780,6 @@ install_wine() {
fi
(
echo "5" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
echo "10" ; echo "# Installation des dépendances..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get install -y wget curl >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "dépendances" "installation"; then
@@ -916,14 +950,7 @@ install_flatpak() {
fi
(
echo "20" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
echo "50" ; echo "# Installation de Flatpak..."
echo "30" ; echo "# Installation de Flatpak..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get install -y flatpak >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "flatpak" "installation"; then
echo "# Erreur lors de l'installation de Flatpak"
@@ -990,23 +1017,18 @@ install_flatseal() {
# Fonction interne pour l'installation
install_flatseal_steps() {
show_progress "Flatseal" 40 "Vérification des sources Flathub..."
if ! ensure_flathub_sources; then
if ! run_with_continuous_progress "Flatseal" "Vérification des sources Flathub..." \
"ensure_flathub_sources"; then
log_error "Échec de la configuration de Flathub pour Flatseal"
return 1
fi
show_progress "Flatseal" 70 "Installation de Flatseal via Flatpak..."
log_info "Installation de Flatseal via Flatpak"
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S flatpak install -y flathub com.github.tchx84.Flatseal >> "$LOG_FILE" 2>&1
local result=$?
log_info "Résultat installation Flatseal: $result"
if [ $result -ne 0 ]; then
if ! run_with_continuous_progress "Flatseal" "Installation de Flatseal via Flatpak..." \
"echo '$password' | timeout $TIMEOUT_INSTALL sudo -S flatpak install -y flathub com.github.tchx84.Flatseal >> '$LOG_FILE' 2>&1"; then
log_error "Échec de l'installation de Flatseal via Flatpak"
return 1
fi
show_progress "Flatseal" 100 "Vérification de l'installation..."
return 0
}
@@ -1298,27 +1320,12 @@ install_mumble() {
# Fonction interne pour l'installation
install_mumble_steps() {
show_progress "Mumble" 20 "Mise à jour des sources..."
log_info "Début mise à jour des sources pour Mumble"
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
local result=$?
log_info "Résultat apt-get update: $result"
if ! check_apt_success $result "sources" "mise à jour"; then
log_error "Échec mise à jour des sources pour Mumble"
return 1
fi
show_progress "Mumble" 70 "Installation de Mumble..."
log_info "Installation du paquet Mumble"
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y mumble >> "$LOG_FILE" 2>&1
local result=$?
log_info "Résultat installation Mumble: $result"
if ! check_apt_success $result "mumble" "installation"; then
if ! run_with_continuous_progress "Mumble" "Installation de Mumble..." \
"echo '$password' | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y mumble >> '$LOG_FILE' 2>&1"; then
log_error "Échec installation Mumble"
return 1
fi
show_progress "Mumble" 100 "Vérification de l'installation..."
return 0
}
@@ -1383,14 +1390,7 @@ install_heroic() {
fi
(
echo "10" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
echo "20" ; echo "# Installation des dépendances..."
echo "15" ; echo "# Installation des dépendances..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get install -y wget curl >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "wget curl" "installation"; then
echo "# Erreur lors de l'installation des dépendances"
@@ -1449,101 +1449,6 @@ install_heroic() {
fi
}
# Fonction d'installation drivers NVIDIA
install_nvidia() {
log_info "Début de l'installation des drivers NVIDIA"
# Vérifier si les drivers NVIDIA sont déjà installés
if dpkg -l | grep -q "^ii.*nvidia-open" || dpkg -l | grep -q "^ii.*cuda-toolkit"; then
log_info "Drivers NVIDIA déjà installés"
zenity 2>/dev/null --info --title="Composants déjà présents" --text="Les drivers NVIDIA ou CUDA sont déjà installés sur le système."
return
fi
# Utiliser le mot de passe global ou demander un nouveau
if ! use_global_password_or_ask "drivers NVIDIA"; then
return
fi
(
echo "5" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
echo "15" ; echo "# Installation de wget..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get install -y wget >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "wget" "installation"; then
echo "# Erreur lors de l'installation de wget"
exit 1
fi
echo "25" ; echo "# Téléchargement de la clé CUDA..."
timeout $TIMEOUT_DOWNLOAD wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb -P /tmp/ >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
log_error "Échec du téléchargement de la clé CUDA"
echo "# Erreur lors du téléchargement de la clé CUDA"
exit 1
fi
echo "35" ; echo "# Installation du paquet de clé..."
echo "$password" | timeout $TIMEOUT_APT sudo -S dpkg -i /tmp/cuda-keyring_1.1-1_all.deb >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
log_error "Échec de l'installation du paquet de clé CUDA"
echo "# Erreur lors de l'installation du paquet de clé"
exit 1
fi
echo "45" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources après ajout clé CUDA" "mise à jour"; then
echo "# Erreur lors de la mise à jour après ajout de clé"
exit 1
fi
echo "65" ; echo "# Installation de CUDA Toolkit..."
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S apt-get -y install cuda-toolkit-12-9 >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "cuda-toolkit-12-9" "installation"; then
echo "# Erreur lors de l'installation de CUDA Toolkit"
exit 1
fi
echo "85" ; echo "# Installation des drivers NVIDIA..."
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y nvidia-open >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "nvidia-open" "installation"; then
echo "# Erreur lors de l'installation des drivers NVIDIA"
exit 1
fi
echo "95" ; echo "# Nettoyage..."
rm -f /tmp/cuda-keyring_1.1-1_all.deb
echo "100" ; echo "# Vérification de l'installation..."
) | zenity 2>/dev/null --progress \
--title="Installation des drivers NVIDIA" \
--text="Initialisation..." \
--percentage=0 \
--width=400 \
--auto-close
# Vérifier le code de sortie du processus
if [ ${PIPESTATUS[0]} -ne 0 ]; then
show_error_logs "Échec de l'installation des drivers NVIDIA"
return
fi
# Vérifier si l'installation a réussi
if dpkg -l | grep -q "^ii.*nvidia-open" && dpkg -l | grep -q "^ii.*cuda-toolkit"; then
log_info "Installation drivers NVIDIA réussie"
INSTALLED_APPS+=("Drivers NVIDIA")
INSTALLATION_MESSAGES+=("Les drivers NVIDIA ont été installés avec succès (redémarrage requis)")
else
log_error "Drivers NVIDIA non trouvés après installation"
show_error_logs "Drivers NVIDIA non trouvés après installation"
fi
}
# Fonction d'installation des GOverlay
install_GOverlay() {
@@ -1566,14 +1471,7 @@ install_GOverlay() {
fi
(
echo "15" ; echo "# Mise à jour des sources..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources" "mise à jour"; then
echo "# Erreur lors de la mise à jour des sources"
exit 1
fi
echo "40" ; echo "# Installation de gamemode..."
echo "25" ; echo "# Installation de gamemode..."
echo "$password" | timeout $TIMEOUT_INSTALL sudo -S apt-get install -y gamemode >> "$LOG_FILE" 2>&1
gamemode_success=$?
@@ -1727,11 +1625,11 @@ uninstall_steam_silent() {
}
# Fonction de désinstallation ProtonUp-Qt
uninstall_protonup() {
uninstall_proton_plus() {
log_info "Début de la désinstallation de ProtonUp-Qt"
# Vérifier si ProtonUp-Qt est installé
if ! flatpak list | grep -q "net.davidotek.pupgui2"; then
if ! flatpak list | grep -q "com.vysp3r.ProtonPlus"; then
log_info "ProtonUp-Qt non installé"
zenity 2>/dev/null --info --title="Non installé" --text="ProtonUp-Qt n'est pas installé sur le système."
return
@@ -1756,7 +1654,7 @@ uninstall_protonup() {
(
echo "50" ; echo "# Désinstallation de ProtonUp-Qt..."
echo "$password" | timeout $TIMEOUT_APT sudo -S flatpak uninstall -y net.davidotek.pupgui2 >> "$LOG_FILE" 2>&1
echo "$password" | timeout $TIMEOUT_APT sudo -S flatpak uninstall -y com.vysp3r.ProtonPlus >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
log_error "Échec de la désinstallation de ProtonUp-Qt"
echo "# Erreur lors de la désinstallation de ProtonUp-Qt"
@@ -1778,7 +1676,7 @@ uninstall_protonup() {
fi
# Vérifier si la désinstallation a réussi
if ! flatpak list | grep -q "net.davidotek.pupgui2"; then
if ! flatpak list | grep -q "com.vysp3r.ProtonPlus"; then
log_info "Désinstallation ProtonUp-Qt réussie"
zenity 2>/dev/null --info --title="Succès" --text="ProtonUp-Qt a été désinstallé avec succès !"
else
@@ -1787,25 +1685,25 @@ uninstall_protonup() {
fi
}
uninstall_protonup_silent() {
uninstall_proton_plus_silent() {
local password="$1"
log_info "Début de la désinstallation de ProtonUp-Qt (mode silencieux)"
# Vérifier si ProtonUp-Qt est installé
if ! flatpak list | grep -q "net.davidotek.pupgui2"; then
if ! flatpak list | grep -q "com.vysp3r.ProtonPlus"; then
log_info "ProtonUp-Qt non installé"
return 0
fi
# Désinstaller sans confirmation ni interface graphique
echo "$password" | timeout $TIMEOUT_APT sudo -S flatpak uninstall -y net.davidotek.pupgui2 >> "$LOG_FILE" 2>&1
echo "$password" | timeout $TIMEOUT_APT sudo -S flatpak uninstall -y com.vysp3r.ProtonPlus >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
log_error "Échec de la désinstallation de ProtonUp-Qt"
return 1
fi
# Vérifier si la désinstallation a réussi
if ! flatpak list | grep -q "net.davidotek.pupgui2"; then
if ! flatpak list | grep -q "com.vysp3r.ProtonPlus"; then
log_info "ProtonUp-Qt désinstallé avec succès"
return 0
else
@@ -2924,126 +2822,7 @@ uninstall_heroic_silent() {
fi
}
# Fonction de désinstallation drivers NVIDIA
uninstall_nvidia() {
log_info "Début de la désinstallation des drivers NVIDIA"
# Vérifier si les drivers NVIDIA sont installés
if ! dpkg -l | grep -q "^ii.*nvidia-open" && ! dpkg -l | grep -q "^ii.*cuda-toolkit"; then
log_info "Drivers NVIDIA non installés"
zenity 2>/dev/null --info --title="Non installés" --text="Les drivers NVIDIA ne sont pas installés sur le système."
return
fi
# Demander confirmation avec avertissement
if ! zenity 2>/dev/null --question --title="Confirmation - ATTENTION" --text="ATTENTION: La désinstallation des drivers NVIDIA peut affecter votre affichage.\n\nÊtes-vous sûr de vouloir continuer ?"; then
return
fi
# Demander le mot de passe sudo
password=$(zenity 2>/dev/null --password --title="Authentification - Désinstallation NVIDIA" --text="Mot de passe sudo requis pour désinstaller les drivers NVIDIA:")
if [ $? -eq 1 ]; then
return
fi
# Vérifier le mot de passe sudo
if ! check_sudo_password "$password"; then
return
fi
(
echo "20" ; echo "# Désinstallation de CUDA Toolkit..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get purge -y cuda-toolkit-12-9 >> "$LOG_FILE" 2>&1
cuda_remove_result=$?
echo "50" ; echo "# Désinstallation des drivers NVIDIA..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get purge -y nvidia-open >> "$LOG_FILE" 2>&1
nvidia_remove_result=$?
# Logger les résultats individuels
check_apt_success $cuda_remove_result "cuda-toolkit-12-9" "désinstallation"
check_apt_success $nvidia_remove_result "nvidia-open" "désinstallation"
# Vérifier si au moins une désinstallation a échoué
if [ $cuda_remove_result -ne 0 ] || [ $nvidia_remove_result -ne 0 ]; then
echo "# Erreur lors de la désinstallation des composants NVIDIA"
exit 1
fi
echo "80" ; echo "# Nettoyage des paquets orphelins..."
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get autoremove -y >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "paquets orphelins" "nettoyage"; then
echo "# Avertissement: Erreur lors du nettoyage des paquets orphelins"
fi
echo "100" ; echo "# Vérification de la désinstallation..."
) | zenity 2>/dev/null --progress \
--title="Désinstallation des drivers NVIDIA" \
--text="Initialisation..." \
--percentage=0 \
--width=400 \
--auto-close
# Vérifier le code de sortie du processus
if [ ${PIPESTATUS[0]} -ne 0 ]; then
show_error_logs "Échec de la désinstallation des drivers NVIDIA"
return
fi
# Vérifier si la désinstallation a réussi
if ! dpkg -l | grep -q "^ii.*nvidia-open" && ! dpkg -l | grep -q "^ii.*cuda-toolkit"; then
log_info "Désinstallation drivers NVIDIA réussie"
zenity 2>/dev/null --info --title="Succès" --text="Les drivers NVIDIA ont été désinstallés avec succès !\nUn REDÉMARRAGE est recommandé."
else
log_error "Échec de la désinstallation des drivers NVIDIA"
show_error_logs "Échec de la désinstallation des drivers NVIDIA"
fi
}
uninstall_nvidia_silent() {
local password="$1"
log_info "Début de la désinstallation des drivers NVIDIA (mode silencieux)"
# Vérifier si les drivers NVIDIA sont installés
if ! dpkg -l | grep -q "^ii.*nvidia-open" && ! dpkg -l | grep -q "^ii.*cuda-toolkit"; then
log_info "Drivers NVIDIA non installés"
return 0
fi
# Désinstaller CUDA Toolkit
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get purge -y cuda-toolkit-12-9 >> "$LOG_FILE" 2>&1
cuda_remove_result=$?
# Désinstaller les drivers NVIDIA
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get purge -y nvidia-open >> "$LOG_FILE" 2>&1
nvidia_remove_result=$?
# Logger les résultats individuels
check_apt_success $cuda_remove_result "cuda-toolkit-12-9" "désinstallation"
check_apt_success $nvidia_remove_result "nvidia-open" "désinstallation"
# Vérifier si au moins une désinstallation a échoué
if [ $cuda_remove_result -ne 0 ] || [ $nvidia_remove_result -ne 0 ]; then
log_error "Erreur lors de la désinstallation des composants NVIDIA"
return 1
fi
# Nettoyage des paquets orphelins
echo "$password" | timeout $TIMEOUT_APT sudo -S apt-get autoremove -y >> "$LOG_FILE" 2>&1
# Vérifier si la désinstallation a réussi
cuda_ok=$(dpkg -l | grep -q "^ii.*cuda-toolkit" && echo "non" || echo "oui")
nvidia_ok=$(dpkg -l | grep -q "^ii.*nvidia-open" && echo "non" || echo "oui")
if [ "$cuda_ok" = "oui" ] && [ "$nvidia_ok" = "oui" ]; then
log_info "Désinstallation des drivers NVIDIA réussie"
return 0
else
log_info "Désinstallation partielle des drivers NVIDIA"
return 1
fi
}
# Fonction de désinstallation des GOverlay
uninstall_GOverlay() {
@@ -3228,27 +3007,20 @@ fi
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
# Déterminer le mode final
if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then
if [ $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 ;;
"Désinstaller"|"Installer"|"") continue ;;
esac
case $component in
"steam") uninstall_display="$uninstall_display\n• Steam" ;;
"protonup") uninstall_display="$uninstall_display\n• ProtonUp-Qt" ;;
"proton plus") uninstall_display="$uninstall_display\n• ProtonUp-Qt" ;;
"heroic") uninstall_display="$uninstall_display\n• Heroic Game Launcher" ;;
"lutris") uninstall_display="$uninstall_display\n• Lutris" ;;
"bottles") uninstall_display="$uninstall_display\n• Bottles" ;;
@@ -3261,7 +3033,6 @@ if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then
"teamspeak") uninstall_display="$uninstall_display\n• TeamSpeak" ;;
"mumble") uninstall_display="$uninstall_display\n• Mumble" ;;
"flatseal") uninstall_display="$uninstall_display\n• Flatseal" ;;
"nvidia") uninstall_display="$uninstall_display\n• Drivers NVIDIA (ATTENTION: peut affecter l'affichage)" ;;
"GOverlay") uninstall_display="$uninstall_display\n• GOverlay (GameMode, MangoHUD, GOverlay)" ;;
esac
done
@@ -3299,7 +3070,7 @@ if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then
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 ;;
"Désinstaller"|"Installer"|"") continue ;;
esac
log_info "Traitement du composant: $component"
@@ -3311,8 +3082,8 @@ if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then
failed_components="$failed_components\n• Steam"
fi
;;
"protonup")
if uninstall_with_progress "$component" "$password" "ProtonUp-Qt" "uninstall_protonup_silent"; then
"proton plus")
if uninstall_with_progress "$component" "$password" "ProtonUp-Qt" "uninstall_proton_plus_silent"; then
((success_count++))
else
failed_components="$failed_components\n• ProtonUp-Qt"
@@ -3402,13 +3173,6 @@ if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then
failed_components="$failed_components\n• Flatseal"
fi
;;
"nvidia")
if uninstall_with_progress "$component" "$password" "Drivers NVIDIA" "uninstall_nvidia_silent"; then
((success_count++))
else
failed_components="$failed_components\n• Drivers NVIDIA"
fi
;;
"GOverlay")
if uninstall_with_progress "$component" "$password" "GOverlay" "uninstall_GOverlay_silent"; then
((success_count++))
@@ -3462,12 +3226,12 @@ else
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 ;;
"Désinstaller"|"Installer"|"") continue ;;
esac
case $component in
"steam") install_display="$install_display\n• Steam" ;;
"protonup") install_display="$install_display\n• ProtonUp-Qt" ;;
"proton plus") install_display="$install_display\n• ProtonUp-Qt" ;;
"heroic") install_display="$install_display\n• Heroic Game Launcher" ;;
"lutris") install_display="$install_display\n• Lutris" ;;
"bottles") install_display="$install_display\n• Bottles" ;;
@@ -3480,7 +3244,6 @@ else
"teamspeak") install_display="$install_display\n• TeamSpeak" ;;
"mumble") install_display="$install_display\n• Mumble" ;;
"flatseal") install_display="$install_display\n• Flatseal" ;;
"nvidia") install_display="$install_display\n• NVIDIA + CUDA" ;;
"GOverlay") install_display="$install_display\n• Goverlay (FPS, CPU, GPU, température)" ;;
esac
done
@@ -3495,6 +3258,14 @@ else
exit 0
fi
# Mise à jour globale des sources une seule fois pour éviter les délais
log_info "Mise à jour globale des sources APT"
echo "$GLOBAL_SUDO_PASSWORD" | timeout $TIMEOUT_APT sudo -S apt-get update >> "$LOG_FILE" 2>&1
if ! check_apt_success $? "sources globales" "mise à jour"; then
zenity 2>/dev/null --error --title="Erreur" --text="Échec de la mise à jour des sources APT.\nVérifiez votre connexion Internet."
exit 1
fi
# Activer le mode installation groupée si plusieurs applications sont sélectionnées
if [ ${#SELECTED[@]} -gt 1 ]; then
start_batch_install ${#SELECTED[@]} "$install_display"
@@ -3505,15 +3276,15 @@ else
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 ;;
"Désinstaller"|"Installer"|"") continue ;;
esac
case $component in
"steam")
install_steam
;;
"protonup")
install_protonup
"proton plus")
install_proton_plus
;;
"heroic")
install_heroic
@@ -3551,9 +3322,6 @@ else
"flatseal")
install_flatseal
;;
"nvidia")
install_nvidia
;;
"GOverlay")
install_GOverlay
;;
@@ -3563,7 +3331,7 @@ else
if [ "$BATCH_INSTALL_MODE" = "true" ]; then
case $component in
"steam") next_batch_app "Steam" ;;
"protonup") next_batch_app "ProtonUp-Qt" ;;
"proton plus") next_batch_app "ProtonUp-Qt" ;;
"heroic") next_batch_app "Heroic Game Launcher" ;;
"lutris") next_batch_app "Lutris" ;;
"bottles") next_batch_app "Bottles" ;;
@@ -3576,7 +3344,6 @@ else
"teamspeak") next_batch_app "TeamSpeak" ;;
"mumble") next_batch_app "Mumble" ;;
"flatseal") next_batch_app "Flatseal" ;;
"nvidia") next_batch_app "NVIDIA + CUDA" ;;
"GOverlay") next_batch_app "Goverlay (performances)" ;;
esac
fi