#!/bin/bash
# Le 25.2.2026. Script d'installation automatique d'un certain nombre de logiciels.
# Après une installation de Linux Mint et une mise à jour,
# Copier le dossier  Apps  de la clé USB dans  $HOME/Apps  de l'ordinateur
# cp - a Apps "$HOME/"
# Aller ensuite dans le sous-dossier de l'ordinateur :  Disks 
# cd $HOME/Apps/Disks
#
# Installation en mode ROOT (sudo) (superutilisateur)
# Pour Linux Mint 22.3, avec Cinnamon
# pour l'exécuter et installer une version normale, taper : 
# sudo bash ~/Apps/Disks/apt_22_3_sudo_mint.sh normal | tee ~/Apps/Disks/resultat_sudo_mint.txt
#
# pour l'exécuter et installer une version experte, taper : 
# sudo bash ~/Apps/Disks/apt_22_3_sudo_mint.sh expert | tee ~/Apps/Disks/resultat_sudo_mint.txt
#
# La suite :  | tee ~/Apps/Disks/resultat2.txt
# copiera automatiquement toute la sortie dans le fichier  resultat2.txt
# que vous pourrez consulter une fois l'installation terminée.
# C'est Gemini qui m'a enseigné tout cela. Il est très fort !
#
# Attention : $HOME == /root   et   $USER == root  en mode sudo !
# Il faut donc utiliser : /home/$SUDO_USER
#
# echo "================================="
# echo "la commande: " $0
# echo "le nombre de paramètres: " $#
# echo "le premier paramètre: " $1   le deuxième est: $2   etc.
# echo -n "Pas de retour à la ligne à la fin"
#
# Le code retour  $?  après exit n'est que de 1 octet !
#
# Pour afficher automatiquement le code après chaque commande :
#trap 'echo "Code retour : $?"' EXIT


if [[ $# == "0" ]]; then
  param_ok=0
  echo "Aucun paramètre n'a été donné"
  code_fin=1
elif [[ $1 == "normal" ]]; then
  param_ok=1
  param1=$1   # NE pas mettre d'espace autour du symbole  =
elif [[ $1 == "expert" ]]; then
  param_ok=1
  param1=$1   # NE pas mettre d'espace autour du symbole  =
else
  param_ok=0
  echo "Un paramètre incorrecte a été donné"
  code_fin=2
fi

if [[ $param_ok == 0 ]]; then
    code_fin=$((code_fin + 100))  # arrête l'exécution et indique une erreur n° $code_fin
    echo
    echo "Tapez l'une des deux commandes suivante :"
    echo "sudo bash ~/Apps/Disks/apt_22_3_sudo_mint.sh normal | tee ~/Apps/Disks/resultat_sudo_mint.txt"
    echo "sudo bash ~/Apps/Disks/apt_22_3_sudo_mint.sh expert | tee ~/Apps/Disks/resultat_sudo_mint.txt"
    echo
    echo "La première fait une installation pour un utilisateur normal"
    echo "La seconde  fait une installation pour un utilisateur expert"
    exit $code_fin   # arrête l'exécution et indique une erreur n° $code_fin
else
  if [[ $param1 == "normal" ]]; then
    echo "Le paramètre 'normal' a été donné"
  elif [[ $param1 == "expert" ]]; then
    echo "Le paramètre 'expert' a été donné"
  else
    echo "On ne devrait jamais arriver ici."
    echo "Si on y arrive, c'est qu'il y a une erreur de programme."
  fi

  # Code inutile, mais est gardé pour information.
  if [[ $# == "2" ]]; then
    # Il y a un deuième paramètre
    param2=$2
  else
    param2=""
  fi
fi
# param1  indique si on veut une installation normale ou experte

REAL_USER="$SUDO_USER"
REAL_HOME=$(eval echo "~$REAL_USER")
# ~$REAL_USER  équivalent à  ~$SUDO_USER  donnera  ~  suivit du nom de l'utilisateur
# eval  oblige bash à interpréter le  ~ suivit du nom de l'utilisateur, qui donnera : /home/nom de l'utilisateur.
# On peut tester en tapant : echo $(eval echo "~$REAL_USER")
# Puisque mon nom d'utilisateur est  bg,  je peux tester avec : echo ~bg

echo
echo ==================================================================
echo "Début des mise à jour."
echo ==================================================================
apt-get update
echo "Indique de terminer la configuration des paquets installés mais pas encore configurés"
dpkg --configure -a
# apt -f install  # Corrige les dépendances manquantes
echo ==================================================================
echo "Mise à jour, faites."
echo ==================================================================

echo ==================================================================
echo "ttf_mscorefonts-installer, pour des polices standards sous Windows"
echo ==================================================================
#apt-get -y install ttf-mscorefonts-installer
# Pour automatiser, selon Gemini, l'instruction suivante est meilleure :
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
apt-get -y install ttf-mscorefonts-installer

echo ==================================================================
echo "synaptic,  pour installer de nouveau paquets"
echo ==================================================================
apt-get -y install synaptic

echo ==================================================================
echo "Double commander gtk"
echo ==================================================================
apt-get -y install doublecmd-gtk
apt-get -y install doublecmd-help-en

echo ==================================================================
echo "Midnight Commander"
echo ==================================================================
apt-get -y install mc

echo ==================================================================
echo "gnome-disk-utility"
echo ==================================================================
apt-get -y install gnome-disk-utility

echo ==================================================================
echo "gparted,  pour gérer les partitions disques"
echo ==================================================================
apt-get -y install gparted 

echo ==================================================================
echo "dconfeditor,  pour éditer des fichiers de configurations, tels que les raccoucis clavier"
echo ==================================================================
apt-get -y install dconf-editor

echo ==================================================================
echo "gedit, l3afpad (==leafpad), geany et kate"
echo "éditeurs de textes"
echo ==================================================================
apt-get -y install gedit
apt-get -y install l3afpad
apt-get -y install geany
apt-get -y install geany-plugins
apt-get -y install kate
if [[ $param1 == "expert" ]]; then
  apt-get -y install sublime-text
fi

echo ==================================================================
echo "vlc,  pour visualiser des vidéos"
echo ==================================================================
apt-get -y install vlc

echo ==================================================================
echo "mplay et ffmpeg,  pour visualiser des vidéos"
echo ==================================================================
apt-get -y install mplayer
apt-get -y install ffmpeg

echo ==================================================================
echo "gimp,  éditeur d'images"
echo ==================================================================
apt-get -y install gimp

echo ==================================================================
echo "alacarte = \"menu principal\",  pour éditer les menus"
echo ==================================================================
apt-get -y install alacarte

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "xpdf, pour traiter des fichiers .pdf"
  echo ==================================================================
  apt-get -y install xpdf
fi

echo ==================================================================
echo "okular, pour traiter des fichiers .pdf"
echo ==================================================================
apt-get -y install okular

echo ==================================================================
echo "cups-pdf, pour imprimer dans un fichier PDF"
echo ==================================================================
apt-get -y install cups-pdf

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "hplip et hplip-gui,  pour gérer les imprimantes HP"
  echo ==================================================================
  apt-get -y install hplip
  apt-get -y install hplip-gui
fi

echo ==================================================================
echo "shutter, pour des capture d écran"
echo ==================================================================
apt-get -y install shutter

echo ==================================================================
echo "skanlite, pour utiliser un scanner et scanner des images"
echo "À INSTALLER en mode Flatpak"
echo ==================================================================
#apt-get -y install skanlite

echo ==================================================================
echo "skanpage, pour utiliser un scanner et scanner des images"
echo "À INSTALLER en mode Flatpak"
echo ==================================================================
#apt-get -y install skanpage

echo ==================================================================
echo "geeqie, pour visualiser des images"
echo ==================================================================
apt-get -y install geeqie

echo ==================================================================
echo "mirage, un gestionnaire pour visualiser des images"
echo ==================================================================
apt-get -y install mirage

echo ==================================================================
echo "gpicview, pour visualiser des images"
echo ==================================================================
apt-get -y install gpicview

echo ==================================================================
echo "audacity, éditeur de sons"
echo ==================================================================
apt-get -y install audacity

echo ==================================================================
echo "lame,  pour gérer le mp3"
echo ==================================================================
apt-get -y install lame

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "timidity, pour manipuler des fichiers .midi"
  echo ==================================================================
  apt-get -y install timidity
fi

echo ==================================================================
echo "rhythmbox, pour écouter de la musique"
echo ==================================================================
apt-get -y install rhythmbox

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "Maxima et l'interface wxMaxima, calcul formel comme mathematica et maple"
  echo ==================================================================
  apt-get -y install wxmaxima
  ###apt-get -y install maxima
  #apt-get -y install maxima  ## Non utile, si wxmaxima est installé.

  echo ==================================================================
  echo "inkscape, pour du dessin vectoriel"
  echo ==================================================================
  apt-get -y install inkscape
fi

echo ==================================================================
echo ##################################################################
echo "Quelques jeux et divertissements"
echo ##################################################################
echo ==================================================================

echo ==================================================================
echo "stellarium, un planétarium"
echo ==================================================================
apt-get -y install stellarium

echo ==================================================================
echo "celestia, pour voyager dans notre galaxy et la découvrire"
echo "N'est plus disponible sous forme de paquet."
echo "c.f. : https://doc.ubuntu-fr.org/celestia"
echo "La version Windows 1.6.1 32 bits fonctionne sous WINE"
echo ==================================================================
#apt-get -y install celestia
#Existe en Appimage sous : https://github.com/ivan-hc/Celestia-appimage/releases/tag/continuous

echo ==================================================================
echo "gperiodic, kalzium, deux tables périodique des éléments"
echo ==================================================================
apt-get -y install gperiodic

echo ==================================================================
echo "gnomine, le jeu de démineur sous linux"
echo ==================================================================
apt-get -y install gnome-mines

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "childsplay, divers jeux pour enfants, n'existe plus'"
  echo ==================================================================
  ###apt-get -y install childsplay

  echo ==================================================================
  echo "Pour KDE, pas installé : kgeography ; ktouch ; kalzium"
  echo ==================================================================
  ###apt-get -y install kgeography
  ###apt-get -y install ktouch
  ###apt-get -y install kalzium
  ###apt-get -y install kmines
fi

echo ==================================================================
echo "Installation de libreoffice"
echo ==================================================================
# pour installer l'interface en français.
apt-get -y install libreoffice-l10n-fr 
# pour installer l'aide localement, sans devoir accéder au Web.
apt-get -y install libreoffice-help-fr
# pour installer le solveur.
apt-get -y install libreoffice-nlpsolver

echo ==================================================================
echo "Installation de Verbiste"
echo ==================================================================
apt-get -y install verbiste-gnome

echo ==================================================================
echo "Installation de Java default-jre"
echo "Installe aussi automatiquement openjdk-11-jre"
echo ==================================================================
apt-get -y install default-jre
# c.f. : http://doc.ubuntu-fr.org/java
# pour la version propriétaire, c.f. : 
# http://doc.ubuntu-fr.org/java#installation_de_la_version_proprietaire

# Version plus récente, pas vraiment utile de manière générale
#echo ==================================================================
#echo "Installation de Java : openjdk-21-jre default-jre"
#echo ==================================================================
#apt-get -y install openjdk-21-jre

echo ==================================================================
echo "brasero et xfburn (==k3b, pour KDE), pour graver des CD et DVD"
echo ==================================================================
###apt-get -y install k3b
apt-get -y install brasero
if [[ $param1 == "expert" ]]; then
  apt-get -y install xfburn
fi

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "pour installer un environnement de developpement C++"
  echo "build-essential  pour le compilateur"
  echo "codeblocks  pour l'environnement"
  echo ==================================================================
  apt-get -y install build-essential codeblocks
  apt-get -y install gcc

  echo ==================================================================
  echo "xosview, information sur l'activité des processeurs, des mémoires et de l'internet"
  echo ==================================================================
  apt-get -y install xosview
fi

echo ==================================================================
echo "hardinfo (==kinfocenter pour KDE), information sur le système, la mémoire, etc."
echo ==================================================================
###apt-get -y install kinfocenter
apt-get -y install hardinfo

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "SimpleScreenRecorder, enregistrement de l'écran"
  echo ==================================================================
  apt-get -y install simplescreenrecorder
  # Si vous voulez enregistrer des applications OpenGL 32 bits sur un système 64 bits :
  ##apt-get -y install simplescreenrecorder-lib:i386

  echo ==================================================================
  echo "Vokoscreen, pour enregistrer l'écran"
  echo ==================================================================
  apt-get -y install vokoscreen

  echo ==================================================================
  echo "Terminal de xfce"
  echo ==================================================================
  apt-get -y install xfce4-terminal

  echo ==================================================================
  echo "Arduino, pour programmer des micro-controleurs Arduino et autres"
  echo ==================================================================
  apt-get -y install arduino
  adduser $REAL_USER dialout   # Pour la communication avec l'Arduino"
  # Taper  groups  pour voir la liste des groupes auquel appartient l'utilisateur  $USER

  echo ==================================================================
  echo "HandBrake, éditeur vidéo"
  echo ==================================================================
  ###apt-get -y install handbrake

  echo ==================================================================
  echo "SciLab, cousin de MatLab, simulation scientifique, nécessite beaucoup de librairies"
  echo ==================================================================
  ###apt-get -y install scilab

  echo ==================================================================
  echo "Table de caractères, c.f. https://doc.ubuntu-fr.org/gucharmap"
  echo ==================================================================
  ###apt-get -y install gucharmap

  echo ==================================================================
  echo "Virtualbox, virtualisation"
  echo ==================================================================
  #NONapt-get -y install virtualbox
fi

echo ==================================================================
echo "Chromium-browser ,  une version open source de Chrome."
echo ==================================================================
apt-get -y install chromium

echo ==================================================================
echo "kmag, une loupe pour agrandir une partie de l'écran"
echo ==================================================================
apt-get -y install kmag

echo "=================================================================="
echo "Installation de Wine (Support 64 bits et 32 bits)"
echo "=================================================================="
# 1. Activer l'architecture 32 bits AVANT de mettre à jour les paquets
dpkg --add-architecture i386

# 2. Rafraîchir la liste pour que le système trouve les paquets "i386"
apt update

# 3. Installer le moteur Wine complet et winetricks
apt install -y --install-recommends wine64 wine32 winetricks

echo ==================================================================
echo "wine, winetricks pour exécuter des applications Windows sous linux."
echo ==================================================================
apt-get -y install wine
apt-get -y install winetricks
#apt-get -y install q4wine   # Plutôt orienté utilisateurs avancés. Pas indispensable.

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "Installation de FreeCAD, conception en 3D"
  echo ==================================================================
  #NONapt-get -y install freecad
fi

echo ==================================================================
echo "Installation de 'net-tools' pour 'ifconfig', 'arp', 'netstat', rarp', 'nameif' et 'route'"
echo ==================================================================
apt-get -y install net-tools

echo ==================================================================
echo "Installation de 'arp-scan'"
echo ==================================================================
apt-get -y install arp-scan

echo ==================================================================
echo "Python 3"
echo ==================================================================
apt-get -y install python3

echo ==================================================================
echo "Python3-pip, installateur de librairies Python"
echo ==================================================================
apt-get -y install python3-pip

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "python3-pygame, une librairie pour des jeux en Python"
  echo ==================================================================
  apt-get -y install python3-pygame
  #NONpip3 install pygame
fi

echo ==================================================================
echo "idle, IDE de développement Python"
echo ==================================================================
apt-get -y install idle

echo ==================================================================
echo "thonny, IDE de développement Python"
echo ==================================================================
apt-get -y install thonny

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "spyder3, IDE de développement Python"
  echo ==================================================================
  apt-get -y install spyder3

  echo ==================================================================
  echo "geogebra, pour de la géométrie interactive"
  echo ==================================================================
  apt-get -y install geogebra

  echo ==================================================================
  echo "dosbox, pour émuler le système DOS"
  echo ==================================================================
  apt-get -y install dosbox

  echo ==================================================================
  echo "Autokey, pour automatiser certaines taches avec un programme à écrire en python"
  echo ==================================================================
  apt-get -y install autokey-gtk

  #BG echo ==================================================================
  #BG echo "xapp-gtk3-module, NE PAS FAIRE pour être utilisé avec flatpak"
  #BG echo ==================================================================
  ###apt-get -y install xapp-gtk3-module
  ## ls -la /usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libxapp-gtk3-module.so
  ## Le module existe mais est ignoré par flatpak


  echo ==================================================================
  echo "Blender"
  echo ==================================================================
  #NONapt-get -y install blender
  #NONapt-get -y install blender-data

  echo ==================================================================
  echo "Installation de aseba, pour Thymio"
  echo ==================================================================
  #NONapt-get -y install aseba

  echo ==================================================================
  echo "Lazarus, pour free pascal"
  echo ==================================================================
  #NONapt-get -y install lazarus
fi

echo ==================================================================
echo "Installation de jq, pour le script qui permet d'ajouter des application dans le lanceur de la barre de tâches"
apt-get -y install jq
echo ==================================================================

echo ==================================================================
echo "flatpak, pour installé des exécutables 'flatpak'"
echo ==================================================================
apt-get -y install flatpak

echo ==================================================================
echo "Installation de paquets du dossier : Disks"
echo "##########################################"
echo ==================================================================
echo .

echo ==================================================================
echo "google-chrome-stable_current_amd64.deb"
echo ==================================================================
#dpkg -i $REAL_HOME/Apps/Disks/Google_chrome/google-chrome-stable_current_amd64.deb
apt install -y "$REAL_HOME/Apps/Disks/Google_chrome/google-chrome-stable_current_amd64.deb"
# $REAL_HOME est défini en début de fichier

echo ==================================================================
echo "Google meet s'utilise directement dans le navigateur Chrome"
echo ==================================================================

echo ==================================================================
echo "Google earth est intégré à Google Chrome"
echo ==================================================================

echo ==================================================================
echo "rustdesk-1.4.5-x86_64.deb,  pour dépanner à distance des amis"
echo ==================================================================
#dpkg -i $REAL_HOME/Apps/Disks/Rustdesk/rustdesk-1.4.5-x86_64.deb
apt install -y "$REAL_HOME/Apps/Disks/Rustdesk/rustdesk-1.4.5-x86_64.deb"
# Possibilité de télécharger automatiquement la dernière version
#wget -O "$REAL_HOME/Apps/Disks/Rustdesk.deb" "https://github.com/rustdesk/rustdesk/releases/latest/download/rustdesk-1.4.5-x86_64.deb"

# Juste pour information sur une automatisation du téléchargement :
# Récupérer l'URL de la dernière version pour Linux 64 bits
#URL=$(curl -s https://api.github.com/repos/rustdesk/rustdesk/releases/latest \
#      | grep browser_download_url \
#      | grep x86_64.deb \
#      | cut -d '"' -f 4)
#
## Télécharger le fichier
#wget -O "$REAL_HOME/Apps/Rustdesk.deb" "$URL"
#
## Installer
#sudo dpkg -i "$REAL_HOME/Apps/Rustdesk.deb"
#sudo apt -f install -y


echo ==================================================================
echo "teams-for-linux_1.4.5_amd64.deb"
echo ==================================================================
#dpkg -i $REAL_HOME/Apps/Disks/Teams/teams-for-linux_1.4.5_amd64.deb
apt install -y "$REAL_HOME/Apps/Disks/Teams/teams-for-linux_1.4.5_amd64.deb"

if [[ $param1 == "expert" ]]; then
  echo ==================================================================
  echo "atom-amd64.deb, un éditeur de textes puissant"
  echo ==================================================================
  #dpkg -i $REAL_HOME/Apps/Disks/Atom/atom-amd64.deb
  apt install -y "$REAL_HOME/Apps/Disks/Atom/atom-amd64.deb"
fi

echo ==================================================================
echo "Pour réparer d'éventuelles installation ratées"
echo ==================================================================
apt -f -y install
apt --fix-broken install

if [[ $param1 == "expert" ]]; then
  echo ""
  echo "Pour pourvoir utiliser Video Download Helper dans Firefox, installer :"
  echo "curl -sSLf https://github.com/aclap-dev/vdhcoapp/releases/latest/download/install.sh | bash"
  echo ""
fi

echo ==================================================================
echo "Ayez lancé et fermer  Firefox  et  Double Commander  au moins une fois."
echo "Cela pour les forcer à créer leur dossier de paramètres."
echo
echo "A CONTINUER EN TAPANT, en mode utilisateur (sans le sudo) :"
echo "bash ~/Apps/Disks/apt_22_3_user_mint.sh | tee ~/Apps/Disks/resultat_user_mint.txt"
echo ==================================================================

exit 0   # Pas d'erreur
