bash est un langage de programmation, prévu principalement à être utilisé dans un Terminal,
qui excelle dans la manipulation de fichiers et l'automatisation de tâches sous Linux.
"BASH" signifie Bourne-Again SHell, Bourne étantle nom de la personne qui a écrit la première version de ce langage.
Ce langage est très opaque au premier abord, illisible et sans chance de compréhension du code,
si on a pas appris les instructions,
mais il est extrêmement performant dans l'automatisation et le traitement de fichiers. Scripting Bash, par Ordirepar, une suite de vidéos pour apprendre le bash.
zenity est un programme utilisable par bash pour avoir des boites de dialogues en bash.
Création d'un programme d'installation pour Linux Mint et Ubuntu
Le but de ce qui suit est de montrer comment créer un programme d'installation sous Linux Mint et Ubuntu (et ses variantes).
L'exemple se base sur l'installation du programme GeTax utile au Genevois.
GeTax est un programme d'aide à remplir la déclaration d'impôts pour les genevois.
Il peut être téléchargé sur
le site de la rébuplique et canton de Genève.
Cliquer sur "Télécharger GeTax2025" et sélectionner la version pour Linux (Télécharge GeTax Linux [.tar.gz]
L'année changera au fils du temps.
Marche à suivre pour créer un programme d'installation en mode graphique :
3) Ce que j'ai fait en plus, j'ai ajouté le logo de GeTax2025
au fichier compressé : "getax2025.tar.gz"
4) Dans un Terminal, tapez : cat inst_getax2025.sh getax2025.tar.gz > install_getax2025.run
Cela créera le programme d'installation : "install_getax2025.run"
5) Rendez ce programme exécutable, en tapant : "chmod 755 install_getax2025.run"
Cela ne sert à rien pour une personnes qui télécharge le programme d'Internet. C'est une sécurité.
Soit on met le programme dans un fichier compressé, que l'utilisateur devra décompresser et ainsi les droits d'exécutions sont conservés,
soit l'utilisateur doit faire un clique droit sur le fichier, voir ses propriétés, puis Attributs et indiquer que le fichier est exécutable.
6) Mettez le programme d'installation "install_getax2025.run" à disposition des utilisateurs.
Dans le lien de téléchargement, mettre l'attribut : "download='install_getax2025.run'" pour qu'il ne soit pas ouvert dans une page Web.
En double cliquant dessus, un utilisateur lancera le programme d'installation qui ferra :
° Créera un sous-dossier "Apps" du dossier de l'utilisateur et y copiera le programme GeTax
° Créera sur le bureau un raccourcis de lancement de GeTax
° Installera une machine virtuelle java, s'il n'y en a pas déjà une d'installée.
Avant ce faire ce qui précède, le programme informe l'utilisateur et lui demande ce qu'il veut installer.
Si le programme "zenity" n'est pas installé, l'installe avant tout.
"zenity" est installé par défaut sous Linux Mint et Ubuntu.
"zenity" permet d'afficher des boîtes de dialogues en mode graphique.
Exemple du code se trouvant dans le fichier : "inst_getax2025.sh" (Cliquer sur le + en début de ligne).
#!/bin/bash
# ------------------------------------------------------------------
# Titre : Script d'installation automatique pour GeTax 2025 (Linux Ubuntu et dérivé, comme Mint)
# Description : Installe Java, GeTax et crée les raccourcis menu/bureau.
# Auteur : [Bernard Gisin]
# Date : 13 Février 2026
# Version : 1.0
# Testé sur : Linux Mint 22, Ubuntu 24.04
# Dépendances : zenity, default-jre, tar, wget (ou curl)
# Double cliquer sur le fichier : "install_getax.run" pour l'exécuter et commencer l'installation.
# ------------------------------------------------------------------
# --- CONFIGURATION ---
#URL_TELECHARGEMENT="https://..." # Si vous ajoutez le téléchargement auto plus tard
SOURCE="$HOME/Apps/getax2025_96x96.png"
DEST01="$HOME/Apps"
DEST02="$HOME/Apps/0icons"
# On trouve le chemin officiel du Bureau (compatible Français 'Bureau' / Anglais 'Desktop')
# La commande xdg-user-dir est standard sur Mint.
DOSSIER_BUREAU=$(xdg-user-dir DESKTOP)
# --- ÉTAPE 1 : VÉRIFICATION ET INSTALLATION DE ZENITY ---
if ! command -v zenity &> /dev/null; then
# zenity n'est pas déjà installé.
# Normalement, zenity est installé par défaut sous Ubuntu et sous Mint.
# Pour pouvoir informer l'utilisateur de ce que l'on fait,
# il faut que le script soit lancé dans un terminal.
# Si ce n'est pas le cas, on exécute un terminal, avec le script à l'intérieur.
# --- ÉTAPE 1.1 : FORCER LE TERMINAL ---
# On vérifie si le script est lancé dans un terminal interactif (TTY).
# Si ce n'est pas le cas (ex: double-clic depuis le bureau), on le relance dans un terminal.
if [ ! -t 0 ]; then
# x-terminal-emulator est une commande générique sous Linux (Debian/Mint/Ubuntu)
# qui lance le terminal par défaut du système.
x-terminal-emulator -e "$0"
exit 0
fi
# Message en mode TEXTE (car Zenity n'est pas encore là)
clear
echo "=================================================="
echo " INSTALLATION REQUISE"
echo "=================================================="
echo "Ce programme nécessite l'outil d'affichage 'Zenity'."
echo "Il va être installé maintenant."
echo ""
echo "Veuillez entrer votre mot de passe administrateur (sudo)"
echo "lorsqu'il vous sera demandé ci-dessous."
echo "=================================================="
echo ""
# Installation
# On met à jour la liste des paquets pour éviter les erreurs "paquet introuvable"
sudo apt-get update -qq
sudo apt-get install -y zenity
echo ""
echo "Vérification de l'installation..."
# --- ÉTAPE 1.2 : TRANSITION VERS LE MODE GRAPHIQUE ---
# On revérifie si Zenity est là maintenant
if command -v zenity &> /dev/null; then
# SUCCÈS : On affiche le message AVEC Zenity !
zenity --info \
--title="Succès" \
--text="Zenity a été installé avec succès !\n\nL'installation de GeTax peut maintenant continuer\nen mode graphique." \
--width=400
else
# ÉCHEC : On reste en mode texte pour l'erreur
echo "ERREUR CRITIQUE : L'installation de Zenity a échoué."
echo "Vérifiez votre connexion internet et relancez le script."
echo "ou installez le logiciel zenity à la main et relancez ce programme."
echo "ou utilisez le programme install_getax2025_geek.run depuis un Terminal."
echo "Appuyez sur la touche ENTER pour quitter..."
read
exit 1
fi
fi
# --- LE RESTE DE VOTRE SCRIPT (Mode Graphique) ---
# À partir d'ici, vous pouvez utiliser zenity pour tout le reste.
# --- ÉTAPE 2 : La Sélection à choix multiples
# --separator=" " est CRUCIAL ici : il remplace la barre verticale "|" par un espace
# pour que la boucle "for" comprenne bien la liste ensuite.
CHOIX=$(zenity --list --checklist \
--title="Installation de GeTax et Java" \
--width=650 --height=500 \
--ok-label="Lancer" \
--cancel-label="Quitter" \
--text="Par défaut :\n\
° un dossier Apps va être créé et Getax va être installé dans ce dossier.\n\
° une icône de lancement de GeTax va être placée sur le bureau.\n\
° une machine virtuelle java va être installée, s'il n'y en a pas déjà une.\n\n\
Vous pouvez choisir de modifier les actions par défaut.\n\
Par exemple pour ne faire que la création de l'icône sur le bureau, s'il a été effacé par erreur.\n" \
--column="Install" --column="Logiciel/choix" --column="Description" \
--separator=" " \
TRUE "getax_2025" "Installation du programme de déclaration d'impôts." \
TRUE "icone_de_lancement" "Création d'une icône de lancement de GeTax sur le bureau." \
TRUE "java" "Vérification et installation d'une machine virtuelle java." \
2> /dev/null)
# le "2> /dev/null" empêche l'affichage d'un WARNING lorsqu'on presse sur la touche ENTER.
# Si l'utilisateur annule ou ne choisit rien
if [ -z "$CHOIX" ]; then
# zenity --error --text="Aucun logiciel sélectionné. Annulation."
exit 0
fi
# --- ÉTAPE 3 : L'Installation
for Cas in $CHOIX; do
# echo $Cas # Pourl le développement
if [[ $Cas == "getax_2025" ]]; then
# Installation du programme GeTax 2025
# 1. Déterminer la ligne où commence l'archive (après le marqueur __ARCHIVE_BELOW__)
SKIP=$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0;}' "$0")
# 2. Créer le dossier d'extraction
mkdir -p "$DEST01"
# 3. Extraire la partie binaire du présent fichier ($0)
#echo "Extraction des fichiers..."
tail -n +$SKIP "$0" | tar -xz -C "$DEST01"
# 4. Crée un dossier pour l'icône et y place l'icône de GeTax2025
mkdir -p "$DEST02"
mv -n "$SOURCE" "$DEST02"
rm -f "$SOURCE"
# Au cas où l'on aurait mis des fichiers temporaires dans le dossier suivant
#rm -rf /tmp/getax_install
fi
if [[ $Cas == "icone_de_lancement" ]]; then
# Création d'une icône de lancement sur le bureau
# La première ligne efface le contenu du fichier et y met la ligne : [Desktop Entry]
ICI="$DOSSIER_BUREAU/getax2025.desktop" #pour création sur le bureau
#ICI="lance.desktop" # pour des tests
echo "[Desktop Entry]" > "$ICI"
echo "Version=1.xx" >> "$ICI"
echo "Type=Application" >> "$ICI"
echo "Name=getax-pp-2025" >> "$ICI"
echo "Comment=GeTax 2025, pour la déclaration d'impôts à Genève" >> "$ICI"
echo "Exec=$DEST01/getax-pp-2025/getax-pp-2025" >> "$ICI"
echo "Icon=$DEST02/getax2025_96x96.png" >> "$ICI"
echo "Path=" >> "$ICI"
echo "Terminal=false" >> "$ICI"
echo "StartupNotify=false" >> "$ICI"
# On assure aussi que le fichier .desktop est bien exécutable (au cas où)
chmod 755 "$ICI"
# On force le rafraîchissement (C'est l'équivalent du F5)
# On peut cliquer sur le bureau, puis sur F5 pour mettre à jour les icônes.
# Pour redémarrer le bureau Cinnamon, tapez Alt+F2, puis r, puis la touche ENTER
touch "$DOSSIER_BUREAU"
fi
if [[ $Cas == "java" ]]; then
# --- VÉRIFICATION ET INSTALLATION DE JAVA ---
# 1. Test : Est-ce que Java est déjà là ?
if command -v java &> /dev/null; then
zenity --info --text="Java est déjà installé sur ce système.\n\
Aucune installation supplémentaire n'est requise."
else
# 2. Information à l'utilisateur
zenity --info \
--title="Composant manquant" \
--text="Java est nécessaire pour GeTax.\n\n\
Ce composant n'est pas détecté sur votre système.\n\
Nous allons l'installer maintenant." \
--width=400
# 3. Boucle de demande de mot de passe (pour gérer les erreurs de frappe)
while true; do
# Demande du mot de passe
PASS=$(zenity --password \
--title="Authentification requise" \
--text="Veuillez entrer votre mot de passe administrateur\npour installer Java :")
# Si l'utilisateur annule (bouton Annuler ou Croix), on arrête tout
if [ $? -ne 0 ]; then
zenity --error --text="Installation annulée. GeTax ne peut pas fonctionner sans Java."
exit 1
fi
# Test du mot de passe avec sudo
# L'option -S lit le mot de passe depuis l'entrée standard (echo)
# L'option -v (validate) met à jour le "ticket" sudo sans lancer de commande
echo "$PASS" | sudo -S -v 2> /dev/null
if [ $? -eq 0 ]; then
# Si le code retour est 0, le mot de passe est bon
break
else
zenity --error --text="Mot de passe incorrect. Veuillez réessayer."
fi
done
# 4. Installation avec barre de progression (Pulsante car on ne connait pas la durée exacte)
(
echo "# Mise à jour de la liste des paquets..."
# Le "> /dev/null 2>&1" est indispensable ici pour ne pas envoyer le texte de apt-get à zenity
echo "$PASS" | sudo -S apt-get update -qq > /dev/null 2>&1
echo "# Installation de la Machine Virtuelle Java..."
# On réinjecte le mot de passe pour être sûr (même si sudo a une mémoire tampon)
echo "$PASS" | sudo -S apt-get install -y default-jre > /dev/null 2>&1
echo "# Vérification de l'installation..."
sleep 1
) | zenity --progress \
--title="Installation de Java" \
--pulsate \
--auto-close \
--no-cancel
# 5. Vérification finale
if command -v java &> /dev/null; then
zenity --info --text="Java a été installé avec succès !"
else
zenity --error --text="Une erreur est survenue lors de l'installation de Java."
exit 1
fi
fi
fi
done
# --- ÉTAPE 4 : Information que l'installation est terminée.
zenity --info --text="Installation terminée avec succès !\n" --width=300
exit 0
# NE PAS SUPPRIMER LA LIGNE CI-DESSOUS
__ARCHIVE_BELOW__
Pour information, voici en exemple
le fichier "install_getax2025.run" qui sera généré.
Dans le lien de téléchargement, j'ai mis l'attribut : "download='install_getax2025.run'"
pour qu'il ne soit pas ouvert dans une page Web.
Il est conseillé d'ajouter au dossier contenant le fichier : 'install_getax2025.run',
un fichier : ".htaccess" contenant le texte : AddType application/octet-stream .run
Cela assure que le fichier sera téléchargé et non ouvert dans une page Web.
Il faudra indiquer à l'utilisateur :
1) Télécharger le fichier : "install_getax2025.run"
2) Le rendre exécutable en faisant un clique droit sur le fichier,
aller sur propriétés, puis Droits et cocher la case "Autoriser l'exécution du fichier en tant que programme".
3) Double cliquer sur le fichier : "install_getax2025.run", ce qui lancera l'installation.
Pour lancer GeTax, il suffira de cliquer sur l'icône créé sur le bureau.
Marche à suivre pour créer un programme d'installation en mode Texte :
Cette partie est plus destiné au "Geeks" désirant un programme d'installation en mode texte dans un Terminal.
Il est peut-être utile, si le programme zenity n'arrive pas à être installé.
Normalement, 'zenity' est installé par défaut sous Linux Mint et Ubuntu.
3) Ce que j'ai fait en plus, j'ai ajouté le logo de GeTax2025
au fichier compressé : "getax2025.tar.gz"
4) Dans un Terminal, tapez : cat inst_getax2025_geek.sh getax2025.tar.gz > install_getax2025_geek.run
Cela créera le programme d'installation : "install_getax2025_geek.run"
5) Rendez ce programme exécutable, en tapant : "chmod 755 install_getax2025_geek.run"
Cela ne sert à rien pour une personnes qui télécharge le programme d'Internet. C'est une sécurité.
Soit on met le programme dans un fichier compressé, que l'utilisateur devra décompresser et ainsi les droits d'exécutions sont conservés,
soit l'utilisateur doit faire un clique droit sur le fichier, voir ses propriétés, puis Attributs et indiquer que le fichier est exécutable.
6) Mettez le programme d'installation "install_getax2025_geek.run" à disposition des utilisateurs.
Dans le lien de téléchargement, mettre l'attribut : "download='install_getax2025.run'" pour qu'il ne soit pas ouvert dans une page Web.
En double cliquant dessus, un utilisateur lancera le programme d'installation qui ferra :
° Créera un sous-dossier "Apps" du dossier de l'utilisateur et y copiera le programme GeTax
° Créera sur le bureau un raccourcis de lancement de GeTax
° Installera une machine virtuelle java, s'il n'y en a pas déjà une d'installée.
Avant ce faire ce qui précède, le programme informe l'utilisateur et lui demande ce qu'il veut installer.
Si le programme "zenity" n'est pas installé, l'installe avant tout.
"zenity" permet d'afficher des boîtes de dialogues en mode graphique.
Exemple du code se trouvant dans le fichier : "inst_getax2025_geek.sh" (Cliquer sur le + en début de ligne).
#!/bin/bash
# ------------------------------------------------------------------
# Titre : Script d'installation automatique pour GeTax 2025 (Linux Ubuntu et dérivé, comme Mint)
# Description : Installe Java, GeTax et crée les raccourcis menu/bureau.
# Auteur : [Bernard Gisin]
# Date : 14 Février 2026
# Version : 1.xx (Mode Texte)
# Testé sur : Linux Mint 22, Ubuntu 24.04
# Dépendances : default-jre, tar
# Double cliquer sur le fichier : "install_getax_geek.run" ou lancer dans un Terminal
# ------------------------------------------------------------------
# --- CONFIGURATION ---
SOURCE="$HOME/Apps/getax2025_96x96.png"
DEST01="$HOME/Apps"
DEST02="$HOME/Apps/0icons"
# On trouve le chemin officiel du Bureau (compatible Français 'Bureau' / Anglais 'Desktop')
# La commande xdg-user-dir est standard sur Mint.
DOSSIER_BUREAU=$(xdg-user-dir DESKTOP)
# --- FORCER LE TERMINAL ---
# On vérifie si le script est lancé dans un terminal interactif (TTY).
# Si ce n'est pas le cas (ex: double-clic depuis le bureau), on le relance dans un terminal.
if [ ! -t 0 ]; then
# x-terminal-emulator est une commande générique sous Linux (Debian/Mint/Ubuntu)
# qui lance le terminal par défaut du système.
x-terminal-emulator -e "$0"
exit 0
fi
read -p "Voulez-vous installer GeTax (dans le dossier Apps qui sera créé) (O/n) " rep1
if [[ $rep1 == "" || $rep1 == "o" || $rep1 == "O" ]]; then
echo "Création du dossier $DEST01, s'il n'existe pas déjà."
echo "Et copie des fichiers d'exécution de GeTax dans ce dossier."
# 1. Déterminer la ligne où commence l'archive (après le marqueur __ARCHIVE_BELOW__)
SKIP=$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0;}' "$0")
# 2. Créer le dossier d'extraction
mkdir -p "$DEST01"
# 3. Extraire la partie binaire du présent fichier ($0)
#echo "Extraction des fichiers..."
tail -n +$SKIP "$0" | tar -xz -C "$DEST01"
# 4. Crée in dossier pour l'icône et y place l'icône de GeTax2025
echo "Création du dossier $DEST02 pour y placer l'icône de GeTax2025"
mkdir -p "$DEST02"
mv -n "$SOURCE" "$DEST02"
rm -f "$SOURCE"
# Au cas où l'on aurait mis des fichiers temporaires dans le dossier suivant
#rm -rf /tmp/getax_install
echo "Les fichiers d'exécutions de GeTax ont été installés dans le dossier $DEST01"
else
echo "Pas d'installation de GeTax. (Taper Ctrl+C pour terminer.)"
fi
read -p "Voulez-vous créer sur le bureau une icône de lancement de GeTax (O/n) " rep2
if [[ $rep2 == "" || $rep2 == "o" || $rep2 == "O" ]]; then
echo "Création sur le bureau d'une icône de lancement de GeTax."
# Création d'une icône de lancement sur le bureau
# La première ligne efface le contenu du fichier et y met la ligne : [Desktop Entry]
ICI="$DOSSIER_BUREAU/getax2025.desktop" #pour création sur le bureau
#ICI="lance.desktop" # pour des tests
echo "[Desktop Entry]" > "$ICI"
echo "Version=1.xx" >> "$ICI"
echo "Type=Application" >> "$ICI"
echo "Name=getax-pp-2025" >> "$ICI"
echo "Comment=GeTax 2025, pour la déclaration d'impôts à Genève" >> "$ICI"
echo "Exec=$DEST01/getax-pp-2025/getax-pp-2025" >> "$ICI"
echo "Icon=$DEST02/getax2025_96x96.png" >> "$ICI"
echo "Path=" >> "$ICI"
echo "Terminal=false" >> "$ICI"
echo "StartupNotify=false" >> "$ICI"
# On assure aussi que le fichier .desktop est bien exécutable (au cas où)
chmod 755 "$ICI"
# On force le rafraîchissement (C'est l'équivalent du F5)
# On peut cliquer sur le bureau, puis sur F5 pour mettre à jour les icônes.
# Pour redémarrer le bureau Cinnamon, tapez Alt+F2, puis r, puis la touche ENTER
touch "$DOSSIER_BUREAU"
else
echo "Pas de création d'icône de lancement de GeTax."
fi
# 1. Test : Est-ce que Java est déjà installé ?
if command -v java &> /dev/null; then
echo "Java est déjà installé, rien à faire de plus."
else
# 2. Information à l'utilisateur
echo "Java est nécessaire pour exécuter GeTax."
echo "Ce composant n'est pas détecté sur votre système."
read -p "Voulez-vous installer Java (O/n) " rep3
if [[ $rep3 == "" || $rep3 == "o" || $rep3 == "O" ]]; then
echo "Installation de java. Votre mot de passe administrateur sera nécessaire."
# On force la réinitialisation du "ticket" sudo au cas où
# pour être sûr de tester le mot de passe saisi.
sudo -k
# 3. Boucle de demande de mot de passe (pour gérer les erreurs de frappe)
while true; do
# Demande du mot de passe
# read -s (silent) cache les caractères tapés
# read -p (prompt) affiche le texte
read -s -p "Veuillez entrer votre mot de passe administrateur : " PASSWORD
echo "" # On ajoute un saut de ligne car 'read -s' n'en fait pas
# Test du mot de passe
# On envoie le mot de passe à sudo avec 'echo' et le pipe '|'
# sudo -S lit ce mot de passe.
# sudo -v (validate) vérifie si le mot de passe est bon sans lancer de commande.
# &> /dev/null cache les messages d'erreur natifs de sudo.
if echo "$PASSWORD" | sudo -S -v &> /dev/null; then
echo "✅ Mot de passe accepté."
# Le mot de passe est bon, on sort (break) de la boucle while
break
else
echo "❌ Mot de passe incorrect. Veuillez réessayer."
echo " (Appuyez sur Ctrl+C si vous désirez annuler l'installation de Java)"
echo ""
fi
done
# 4. Installation de Java
echo "# Mise à jour de la liste des paquets..."
# -S indique de prendre le mot de passe de la variable $PASSWORD
# -qq est l'option "très silencieux". Je l'ai supprimée
echo "$PASSWORD" | sudo -S apt-get update
echo "# Installation de la Machine Virtuelle Java..."
# On réinjecte le mot de passe pour être sûr (même si sudo a une mémoire tampon)
echo "$PASSWORD" | sudo -S apt-get install -y default-jre
# 5. Vérification finale
if command -v java &> /dev/null; then
echo "Java a été installé avec succès !"
else
echo "Une erreur est survenue lors de l'installation de Java."
fi
else
echo "Java n'est pas installé, GeTax ne fonctionnera pas sans une machine virtuelle Java."
fi
fi
echo
read -p "Installation terminée, presser sur la touche Enter pour quitter."
exit 0
# NE PAS SUPPRIMER LA LIGNE CI-DESSOUS
__ARCHIVE_BELOW__
Pour information, voici en exemple
le fichier "install_getax2025_geek.run" qui sera généré.
Dans le lien de téléchargement, j'ai mis l'attribut : "download='install_getax2025_geek.run'"
pour qu'il ne soit pas ouvert dans une page Web.
Une liste d'exemples de programmes bash, avec des exemples utilisant zenity
#01 Programmation d'un Arduino Nano Esp32
1ère vidéo indiquant les démarches que j'ai du faire pour programmer un Arduino Nano Esp32.
Elles sont détaillées ci-dessus également.
#02 Simulation d'un clavier suisse romand avec un Arduino Nano Esp32.
2ème vidéo indiquant comment j'ai simulé un clavier suisse romand avec un Ardiono Nano Esp32
J'ai utilisé une bibliothèque existante et implémenté le code pour qu'elle fonctionne avec un clavier suisse romande.
J'ai également ajouté des possibilité pour obtenir des caractères accentués.