Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/05/2026, à 09:42

LinuxBernard

script pour gérer les programmes au démarrage 25.10

Bonjour
Pour Ubuntu 25.10 j'ai écrit un petit script pour gérer les programmes au démarrage et les programmes figurant dans le menu
Je vous le soumet et vous laisse le soin de le modifier et de l'améliorer :

#!/bin/bash
#
###########################################################################################################
#                                                                                                         #
#       ATTENTION CE SCRIPT FONCTIONNE SOUS UBUNTU 25.10 ... A TESTER POUR D'AUTRE VERSION                #
#                                                                                                         #
# Cette procédure utilise zenity pour l'affichage des fenêtres et gedit comme éditeur                     #
#    Installation :                                                                                       #
#      sudo apt install zenity                                                                            #
#      sudo apt install gedit                                                                             #
#         Vous pouvez remplacer gedit par tout autre editeur de votre choix                               #
#         en changeant gedit par votre editeur favori dans ce script                                      #
#                                                                                                         # 
#    Les programmes à lancer au boot se trouve dans le répertoire /home/<utilisateur>/.config/autostart   #
#                                                                                                         #
#    Les programmes de menu se trouve dans le répertoire /home/<utilisateur>/.local/share/applications    #
#    et sont sous la forme de fichiers <nom>.desktop                                                      #
#                                                                                                         #
#     Le nom du programme à lancer est contenu dans ces fichiers (voir la ligne Exec du fichier .desktop) #
# Nota :                                                                                                  #
#   Pour une utilisation facile:                                                                          #
#        a) créer un lien dans /usr/bin pour atteindre Appli_Start.sh                                     #
#           cd /usr/bin                                                                                   #
#           sudo ln -s /<votre shell Appli_Start.sh> Appli_Start.sh                                       #
#        b) créer un fichier :                                                                            #
#          /home/<utilisateur>/.local/share/applications/Appli_Start.desktop                              #
#       exemple :                                                                                         #
#          [Desktop Entry]                                                                                #
#          Version=2.0                                                                                    #
#          Type=Application                                                                               #
#          Terminal=true                                                                                  #
#          Name[fr_FR]=Appli_Start                                                                        #
#          Name=Appli_Start                                                                               #
#          Exec=bash -c "/usr/bin/Appli_Start.sh"                                                         #
#          Icon=<Chemin d'une icone pour matérialiser le programme dans le menu>                          #
#          Hidden=false                                                                                   #
#          NoDisplay=false                                                                                #
#                                                                                                         #
#    Astuce pour créer un lanceur dans le menu :                                                          #
#          Lancer le script depuis votre répertoire (./Appli_Start.sh)                                    #
#            et utiliser ce script pour créer un lanceur dans le menu                                     #
#                                                                                                         #
###########################################################################################################
#
# La ligne suivante sert à régler un problème d'affichage zenity depuis la version Ubuntu 25.10
export GSK_RENDERER=gl
printf "\033[8;1;1t"   # passage en 1 ligne de 1 caractère
function mylist # Liste des .desktop existant
{
  for i in `ls $1`
  do
    if [ -d "$i" ]
    then
      l $1/$i ;
    else
      Liste=$Liste" "$i
    fi
  done
}
function debut # Programme principal On boucle dessus jusqu'à demande d'arrêt par l'utilisateur
{
   Liste=" <Ajouter> <Abandonner>"
   AJOUT="<Ajouter>"
   ABANDONNER="Abandonner"
   mylist $REPAUTO
   PROCESS=$(zenity --width=1380 --height=800 --list --text="Choisissez la Procédure à modifier ou à supprimer ou à ajouter" --column="Fichiers" $Liste)
   if [ "$?" -eq 1 ]; then
       return 1
   fi
   if [ "$PROCESS" = "<Abandonner>" ]; then
       return 1
   fi
   if [ "$PROCESS" = "$AJOUT" ]; then
      NEWPROG=$(zenity --width=480 --height=400 --entry --title "Ajout d'un programme au démarrage" --text="Nom du programme ?")
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      FICDESKTOP="$REPAUTO/$NEWPROG.desktop"
      if [ -f "$FICDESKTOP" ]; then
         if zenity --width=480 --height=400 --question --text="Le lanceur existe déjà, Voulez-vous le remplacer ?"
            then
                echo >/dev/null
            else
                return 0
            fi
      fi
      EXECUTABLE=$(zenity --width=1380 --height=800 --file-selection --title="Choisisez un fichier exécutable")
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      echo "[Desktop Entry]" > $FICDESKTOP
      echo "Type=Application" >> $FICDESKTOP
      ATTENTE=$(zenity --width=600 --height=100 --entry --title "Attente avant lancement après boot" --text="Nombre de secondes (ou 0) ?")
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      if [ "$ATTENTE" = "0" ]; then
         WAIT=""
      else
         WAIT="sleep "$ATTENTE";"
      fi
      TYPE=$(zenity  --width=480 --height=400 --list --text="Indiquez le type de programme" --column="Type" Shell Binaire Abandonner)
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      case $TYPE in
         Abandonner)
            return 0
         ;;
         Shell)
            echo $WAIT'Exec=bash -c "'$EXECUTABLE'"' >> $FICDESKTOP
         ;;
         Binaire)
            echo $WAIT'Exec='$EXECUTABLE >> $FICDESKTOP
         ;;
         *)
            return 0
         ;;
      esac
      echo "Hidden=false" >> $FICDESKTOP
      echo "NoDisplay=false" >> $FICDESKTOP
      echo "X-GNOME-Autostart-enabled=true" >> $FICDESKTOP
      echo "Name[fr_CA]="$NEWPROG >> $FICDESKTOP
      echo "Name="$NEWPROG >> $FICDESKTOP
      echo "Comment[fr_CA]=Généré par Appli_Start" >> $FICDESKTOP
      echo "Comment=Généré par Appli_Start" >> $FICDESKTOP
      if [ $APPLI_START = "Menu" ]; then
         ICONE=$(zenity --width=1380 --height=800 --file-selection --title="Choisisez une icone pour votre lanceur")
         if [ "$?" -eq 1 ]; then
             return 0
         fi
         echo 'Icon='$ICONE >> $FICDESKTOP
      fi
      gedit $FICDESKTOP
   else
      ACTION=$(zenity --width=1380 --height=800 --list --text="Choisissez une action" --column="Action" Modifier Renommer Supprimer Désactiver Activer Abandonner)
      if [ "$?" -eq 1 ]; then
         return 0
      fi
      case $ACTION in
         Abandonner)
            return 0
         ;;
         Supprimer)
            cmd="rm "$REPAUTO"/"$PROCESS
            eval $cmd
            return 0
         ;;
         Modifier)
            cmd="gedit "$REPAUTO"/"$PROCESS
            eval $cmd
            return 0
         ;;
         Désactiver)
            GHOST=${PROCESS/desktop/ghost}
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$GHOST
            eval $cmd
            return 0
         ;;
         Activer)
            DESKTOP=${PROCESS/ghost/desktop}
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$DESKTOP
            eval $cmd
            return 0
         ;;
         Renommer)
            NEWNAME=$(zenity --width=1380 --height=800 --entry --title "Changer le nom de $PROCESS ?" --text="Nouveau Nom (sans extension) ?")
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$NEWNAME".desktop"
            eval $cmd
            return 0
         ;;

         *)
            return 0
         ;;
      esac
   fi
}
STOP=0
APPLI_START=""
CHOIXDESKTOP=$(zenity  --width=480 --height=400 --list --text="Choix Menu ou Start" --column="Type" Menu Start Abandonner)
if [ "$?" -eq 1 ]; then
    STOP=1
fi
case $CHOIXDESKTOP in
   Abandonner)
      STOP=1
   ;;
   Menu)
      REPAUTO="/home/$USER/.local/share/applications"
      STOP=0
      APPLI_START="Menu"
   ;;
   Start)
      REPAUTO="/home/$USER/.config/autostart"
      STOP=0
      APPLI_START="Start"
   ;;
esac
if [ "$STOP" -eq 0 ]; then
   while true; do
      debut
      if [ "$?" -eq 1 ]; then
          break
      fi
   done
fi
zenity --info --title="Arrêt du traitement" --text="Traitement terminé"
exit

modération : message scindé du fil Applications au démarrage sur 25.10 

Dernière modification par xubu1957 (Le 09/05/2026, à 09:52)

Hors ligne

#2 Le 09/05/2026, à 13:40

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

Quelques Modifications et corrections

#!/bin/bash
#
###########################################################################################################
#                                                                                                         #
#       ATTENTION CE SCRIPT FONCTIONNE SOUS UBUNTU 25.10 ... A TESTER POUR D'AUTRE VERSION                #
#                                                                                                         #
# Cette procédure utilise zenity pour l'affichage des fenêtres et gedit comme éditeur                     #
#    Installation :                                                                                       #
#      sudo apt install zenity                                                                            #
#      sudo apt install gedit                                                                             #
#         Vous pouvez remplacer gedit par tout autre editeur de votre choix                               #
#         en changeant gedit par votre editeur favori dans ce script                                      #
#                                                                                                         # 
#    Les programmes à lancer au boot se trouve dans le répertoire /home/<utilisateur>/.config/autostart   #
#                                                                                                         #
#    Les programmes de menu se trouve dans le répertoire /home/<utilisateur>/.local/share/applications    #
#    et sont sous la forme de fichiers <nom>.desktop                                                      #
#                                                                                                         #
#     Le nom du programme à lancer est contenu dans ces fichiers (voir la ligne Exec du fichier .desktop) #
# Nota :                                                                                                  #
#   Pour une utilisation facile:                                                                          #
#        a) créer un lien dans /usr/bin pour atteindre Appli_Start.sh                                     #
#           cd /usr/bin                                                                                   #
#           sudo ln -s /<votre shell Appli_Start.sh> Appli_Start.sh                                       #
#        b) créer un fichier :                                                                            #
#          /home/<utilisateur>/.local/share/applications/Appli_Start.desktop                              #
#       exemple :                                                                                         #
#          [Desktop Entry]                                                                                #
#          Version=2.0                                                                                    #
#          Type=Application                                                                               #
#          Terminal=true                                                                                  #
#          Name[fr_FR]=Appli_Start                                                                        #
#          Name=Appli_Start                                                                               #
#          Exec=bash -c "/usr/bin/Appli_Start.sh"                                                         #
#          Icon=<Chemin d'une icone pour matérialiser le programme dans le menu>                          #
#          Hidden=false                                                                                   #
#          NoDisplay=false                                                                                #
#                                                                                                         #
#    Astuce pour créer un lanceur dans le menu :                                                          #
#          Lancer le script depuis votre répertoire (./Appli_Start.sh)                                    #
#            et utiliser ce script pour créer un lanceur dans le menu                                     #
#                                                                                                         #
###########################################################################################################
#
# La ligne suivante sert à régler un problème d'affichage zenity depuis la version Ubuntu 25.10
export GSK_RENDERER=gl
printf "\033[8;1;1t"   # passage en 1 ligne de 1 caractère
#
function mylist # Liste des .desktop existant
{
  for i in $1/*.desktop
  do
      fic=$(basename "$i")
      Liste=$Liste" "$fic
  done
}
function debut # Programme principal On boucle dessus jusqu'à demande d'arrêt par l'utilisateur
{
   Liste=" <Ajouter> <Abandonner>"
   AJOUT="<Ajouter>"
   ABANDONNER="Abandonner"
   mylist $REPAUTO
   PROCESS=$(zenity --width=1380 --height=800 --list --text="Choisissez la Procédure à modifier ou à supprimer ou à ajouter" --column="Fichiers" $Liste)
   if [ "$?" -eq 1 ]; then
       return 1
   fi
   if [ "$PROCESS" = "<Abandonner>" ]; then
       return 1
   fi
   if [ "$PROCESS" = "$AJOUT" ]; then
      NEWPROG=$(zenity --width=480 --height=400 --entry --title "Ajout d'un programme au démarrage" --text="Nom du programme ?")
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      FICDESKTOP="$REPAUTO/$NEWPROG.desktop"
      if [ -f "$FICDESKTOP" ]; then
         if zenity --width=480 --height=400 --question --text="Le lanceur existe déjà, Voulez-vous le remplacer ?"
            then
                echo >/dev/null
            else
                return 0
            fi
      fi
      EXECUTABLE=$(zenity --width=1380 --height=800 --file-selection --title="Choisisez un fichier exécutable")
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      echo "[Desktop Entry]" > $FICDESKTOP
      echo "Type=Application" >> $FICDESKTOP
      ATTENTE="0"
      if [ $APPLI_START = "Start" ]; then
         ATTENTE=$(zenity --width=600 --height=100 --entry --title "Attente avant lancement après boot" --text="Nombre de secondes (ou 0) ?")
         if [ "$?" -eq 1 ]; then
             return 0
         fi
      fi
      if [ "$ATTENTE" = "0" ]; then
         WAIT=""
      else
         WAIT="sleep "$ATTENTE";"
      fi
      TYPE=$(zenity  --width=480 --height=400 --list --text="Indiquez le type de programme" --column="Type" Shell Binaire Abandonner)
      if [ "$?" -eq 1 ]; then
          return 0
      fi
      case $TYPE in
         Abandonner)
            return 0
         ;;
         Shell)
            echo $WAIT'Exec=bash -c "'$EXECUTABLE'"' >> $FICDESKTOP
         ;;
         Binaire)
            echo $WAIT'Exec='$EXECUTABLE >> $FICDESKTOP
         ;;
         *)
            return 0
         ;;
      esac
      echo "Hidden=false" >> $FICDESKTOP
      echo "NoDisplay=false" >> $FICDESKTOP
      echo "X-GNOME-Autostart-enabled=true" >> $FICDESKTOP
      echo "Name[fr_CA]="$NEWPROG >> $FICDESKTOP
      echo "Name="$NEWPROG >> $FICDESKTOP
      echo "Comment[fr_CA]=Généré par Appli_Start" >> $FICDESKTOP
      echo "Comment=Généré par Appli_Start" >> $FICDESKTOP
      if [ $APPLI_START = "Menu" ]; then
         ICONE=$(zenity --width=1380 --height=800 --file-selection --title="Choisisez une icone pour votre lanceur")
         if [ "$?" -eq 1 ]; then
             return 0
         fi
         echo 'Icon='$ICONE >> $FICDESKTOP
      fi
      gedit $FICDESKTOP
   else
      ACTION=$(zenity --width=1380 --height=800 --list --text="Choisissez une action" --column="Action" Modifier Renommer Supprimer Désactiver Activer Abandonner)
      if [ "$?" -eq 1 ]; then
         return 0
      fi
      case $ACTION in
         Abandonner)
            return 0
         ;;
         Supprimer)
            cmd="rm "$REPAUTO"/"$PROCESS
            eval $cmd
            return 0
         ;;
         Modifier)
            cmd="gedit "$REPAUTO"/"$PROCESS
            eval $cmd
            return 0
         ;;
         Désactiver)
            GHOST=${PROCESS/desktop/ghost}
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$GHOST
            eval $cmd
            return 0
         ;;
         Activer)
            DESKTOP=${PROCESS/ghost/desktop}
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$DESKTOP
            eval $cmd
            return 0
         ;;
         Renommer)
            NEWNAME=$(zenity --width=1380 --height=800 --entry --title "Changer le nom de $PROCESS ?" --text="Nouveau Nom (sans extension) ?")
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$NEWNAME".desktop"
            eval $cmd
            return 0
         ;;

         *)
            return 0
         ;;
      esac
   fi
}
STOP=0
APPLI_START=""
CHOIXDESKTOP=$(zenity  --width=480 --height=400 --list --text="Choix Menu ou Start" --column="Type" Menu Start Abandonner)
if [ "$?" -eq 1 ]; then
    STOP=1
fi
case $CHOIXDESKTOP in
   Abandonner)
      STOP=1
   ;;
   Menu)
      REPAUTO="/home/$USER/.local/share/applications"
      STOP=0
      APPLI_START="Menu"
   ;;
   Start)
      REPAUTO="/home/$USER/.config/autostart"
      STOP=0
      APPLI_START="Start"
   ;;
esac
if [ "$STOP" -eq 0 ]; then
   while true; do
      debut
      if [ "$?" -eq 1 ]; then
          break
      fi
   done
fi
zenity --info --title="Arrêt du traitement" --text="Traitement terminé"
exit

Hors ligne

#3 Le 09/05/2026, à 17:26

Watael

Re : script pour gérer les programmes au démarrage 25.10

  for i in $1/*.desktop

c'est mieux.

  • tu peux te dispenser de basename : fic=${i##*/}

  • si Liste est une liste, fais-en une liste :

    #!/bin/bash
    
    declare -a Liste
    ...
    Liste+=( "$fic" )
  •    if [ $? -eq 1 ]; then

    $? est un nombre, les guillemets sont inutiles

  • tu n'es pas obligé d'exclure les variables des guillemets
                cmd="rm $REPAUTO/$PROCESS"

  • eval est inutile, on se demande même pourquoi tu mets la commande dans une variable, puisqu'elle est exécutée tout de suite.
    tu peux la construire dans case/esac et l'exécuter après.

Dernière modification par Watael (Le 09/05/2026, à 17:27)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 10/05/2026, à 10:17

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

Merci pour ces remarques, je vais en tenir compte et rectifier wink
Bonne journée

Hors ligne

#5 Le 10/05/2026, à 10:31

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

J'ai effectué les modifications comme tu me l'as conseillé, par contre la gestion de Liste ne fonctionne pas.
J'ai mis les commandes dans une variable "cmd" pour des facilités de debug, çà me permettait de faire un echo de la commande, mais je vais modifier.
encore merci
ma nouvelle version :

#!/bin/bash
#
###########################################################################################################
#                                                                                                         #
#       ATTENTION CE SCRIPT FONCTIONNE SOUS UBUNTU 25.10 ... A TESTER POUR D'AUTRE VERSION                #
#                                                                                                         #
# Cette procédure utilise zenity pour l'affichage des fenêtres et gedit comme éditeur                     #
#    Installation :                                                                                       #
#      sudo apt install zenity                                                                            #
#      sudo apt install gedit                                                                             #
#         Vous pouvez remplacer gedit par tout autre editeur de votre choix                               #
#         en changeant gedit par votre editeur favori dans ce script                                      #
#                                                                                                         # 
#    Les programmes à lancer au boot se trouve dans le répertoire /home/<utilisateur>/.config/autostart   #
#                                                                                                         #
#    Les programmes de menu se trouve dans le répertoire /home/<utilisateur>/.local/share/applications    #
#    et sont sous la forme de fichiers <nom>.desktop                                                      #
#                                                                                                         #
#     Le nom du programme à lancer est contenu dans ces fichiers (voir la ligne Exec du fichier .desktop) #
# Nota :                                                                                                  #
#   Pour une utilisation facile:                                                                          #
#        a) créer un lien dans /usr/bin pour atteindre Appli_Start.sh                                     #
#           cd /usr/bin                                                                                   #
#           sudo ln -s /<votre shell Appli_Start.sh> Appli_Start.sh                                       #
#        b) créer un fichier :                                                                            #
#          /home/<utilisateur>/.local/share/applications/Appli_Start.desktop                              #
#       exemple :                                                                                         #
#          [Desktop Entry]                                                                                #
#          Version=2.0                                                                                    #
#          Type=Application                                                                               #
#          Terminal=true                                                                                  #
#          Name[fr_FR]=Appli_Start                                                                        #
#          Name=Appli_Start                                                                               #
#          Exec=bash -c "/usr/bin/Appli_Start.sh"                                                         #
#          Icon=<Chemin d'une icone pour matérialiser le programme dans le menu>                          #
#          Hidden=false                                                                                   #
#          NoDisplay=false                                                                                #
#                                                                                                         #
#    Avant chaque modification les fichiers .desktop sont sauvegardés :                                   #
#       - soit dans le répertoire /home/<utilisateur>/.local/share/applications/save                      #
#       - soit dans le répertoire /home/<utilisateur>/.config/autostart/save                              #
#                                                                                                         #
#    Astuce pour créer un lanceur dans le menu :                                                          #
#          Lancer le script depuis votre répertoire (./Appli_Start.sh)                                    #
#            et utiliser ce script pour créer un lanceur dans le menu                                     #
#                                                                                                         #
###########################################################################################################
#
# La ligne suivante sert à régler un problème d'affichage zenity depuis la version Ubuntu 25.10
export GSK_RENDERER=gl
printf "\033[8;1;1t"   # passage en 1 ligne de 1 caractère
#
function mylist # Liste des .desktop existant
{
  for i in $1/*.desktop
  do
      #fic=$(basename "$i")
      fic=${i##*/}
      Liste=$Liste" "$fic
  done
}
function debut # Programme principal On boucle dessus jusqu'à demande d'arrêt par l'utilisateur
{
   Liste=" <Ajouter> <Abandonner>"
   AJOUT="<Ajouter>"
   ABANDONNER="Abandonner"
   mylist $REPAUTO
   PROCESS=$(zenity --width=1380 --height=800 --list --text="Choisissez la Procédure à modifier ou à supprimer ou à ajouter" --column="Fichiers" $Liste)
   if [ $? -eq 1 ]; then
       return 1
   fi
   if [ "$PROCESS" = "<Abandonner>" ]; then
       return 1
   fi
   if [ "$PROCESS" = "$AJOUT" ]; then
      NEWPROG=$(zenity --width=480 --height=400 --entry --title "Ajout d'un programme au démarrage" --text="Nom du programme ?")
      if [ $? -eq 1 ]; then
          return 0
      fi
      FICDESKTOP="$REPAUTO/$NEWPROG.desktop"
      if [ -f "$FICDESKTOP" ]; then
         if zenity --width=480 --height=400 --question --text="Le lanceur existe déjà, Voulez-vous le remplacer ?"
            then
                DATEMODIF=`date '+%Y-%m-%d_%H:%M:%S'`
                cmd='cp '$FICDESKTOP' '$REPAUTO'/save/'$NEWPROG'.desktop/.'$DATEMODIF
                eval $cmd
            else
                return 0
            fi
      fi
      EXECUTABLE=$(zenity --width=1380 --height=800 --file-selection --title="Exécutable ?")
      if [ $? -eq 1 ]; then
          return 0
      fi
      echo "[Desktop Entry]" > $FICDESKTOP
      echo "Type=Application" >> $FICDESKTOP
      ATTENTE="0"
      if [ $APPLI_START = "Start" ]; then
         ATTENTE=$(zenity --width=600 --height=100 --entry --title "Attente avant lancement après boot" --text="Nombre de secondes (ou 0) ?")
         if [ $? -eq 1 ]; then
             return 0
         fi
      fi
      if [ "$ATTENTE" = "0" ]; then
         WAIT=""
      else
         WAIT="sleep "$ATTENTE";"
      fi
      TYPE=$(zenity  --width=480 --height=400 --list --text="Indiquez le type de programme" --column="Type" Shell Binaire Abandonner)
      if [ $? -eq 1 ]; then
          return 0
      fi
      case $TYPE in
         Abandonner)
            return 0
         ;;
         Shell)
            echo $WAIT'Exec=bash -c "'$EXECUTABLE'"' >> $FICDESKTOP
         ;;
         Binaire)
            echo $WAIT'Exec='$EXECUTABLE >> $FICDESKTOP
         ;;
         *)
            return 0
         ;;
      esac
      echo "Hidden=false" >> $FICDESKTOP
      echo "NoDisplay=false" >> $FICDESKTOP
      echo "X-GNOME-Autostart-enabled=true" >> $FICDESKTOP
      echo "Name[fr_CA]="$NEWPROG >> $FICDESKTOP
      echo "Name="$NEWPROG >> $FICDESKTOP
      echo "Comment[fr_CA]=Généré par Appli_Start" >> $FICDESKTOP
      echo "Comment=Généré par Appli_Start" >> $FICDESKTOP
      if [ $APPLI_START = "Menu" ]; then
         ICONE=$(zenity --width=1380 --height=800 --file-selection --title="Icone ?")
         if [ $? -eq 1 ]; then
             return 0
         fi
         echo 'Icon='$ICONE >> $FICDESKTOP
      fi
      DATEMODIF=`date '+%Y-%m-%d_%H:%M:%S'`
      cmd='cp '$FICDESKTOP' '$REPAUTO'/save/'$NEWPROG'.desktop.'$DATEMODIF
      eval $cmd
      gedit $FICDESKTOP
   else
      ACTION=$(zenity --width=1380 --height=800 --list --text="Choisissez une action" --column="Action" Modifier Renommer Supprimer Désactiver Activer Abandonner)
      if [ $? -eq 1 ]; then
         return 0
      fi
      case $ACTION in
         Abandonner)
            return 0
         ;;
         Supprimer)
            DATEMODIF=`date '+%Y-%m-%d_%H:%M:%S'`
            cmd='cp '$REPAUTO'/'$PROCESS' '$REPAUTO'/save/'$PROCESS'.'$DATEMODIF
            eval $cmd
            cmd="rm "$REPAUTO"/"$PROCESS
            eval $cmd
            return 0
         ;;
         Modifier)
            DATEMODIF=`date '+%Y-%m-%d_%H:%M:%S'`
            cmd='cp '$REPAUTO'/'$PROCESS' '$REPAUTO'/save/'$PROCESS'.'$DATEMODIF
            eval $cmd
            cmd="gedit "$REPAUTO"/"$PROCESS
            eval $cmd
            return 0
         ;;
         Désactiver)
            DATEMODIF=`date '+%Y-%m-%d_%H:%M:%S'`
            cmd='cp '$REPAUTO'/'$PROCESS' '$REPAUTO'/save/'$PROCESS'.'$DATEMODIF
            eval $cmd
            sed '/^NoDisplay/d' $REPAUTO"/"$PROCESS > $REPAUTO/mano
            echo "NoDisplay=true" >> $REPAUTO/mano
            cmd='cp '$REPAUTO'/mano '$REPAUTO'/'$PROCESS
            eval $cmd
            rm $REPAUTO/mano
            return 0
         ;;
         Activer)
            DATEMODIF=`date '+%Y-%m-%d_%H:%M:%S'`
            cmd='cp '$REPAUTO'/'$PROCESS' '$REPAUTO'/save/'$PROCESS'.'$DATEMODIF
            eval $cmd
            sed '/^NoDisplay/d' $REPAUTO"/"$PROCESS > $REPAUTO/mano
            echo "NoDisplay=false" >> $REPAUTO/mano
            cmd='cp '$REPAUTO'/mano '$REPAUTO'/'$PROCESS
            eval $cmd
            rm $REPAUTO/mano
            return 0
         ;;
         Renommer)
            NEWNAME=$(zenity --width=1380 --height=800 --entry --title "Changer le nom de $PROCESS ?" --text="Nouveau Nom (sans extension) ?")
            cmd="mv "$REPAUTO"/"$PROCESS" "$REPAUTO"/"$NEWNAME".desktop"
            eval $cmd
            return 0
         ;;

         *)
            return 0
         ;;
      esac
   fi
}
STOP=0
APPLI_START=""
CHOIXDESKTOP=$(zenity  --width=480 --height=400 --list --text="Choix Menu ou Start" --column="Type" Menu Start Abandonner)
if [ $? -eq 1 ]; then
    STOP=1
fi
case $CHOIXDESKTOP in
   Abandonner)
      STOP=1
   ;;
   Menu)
      REPAUTO="/home/$USER/.local/share/applications"
      STOP=0
      APPLI_START="Menu"
   ;;
   Start)
      REPAUTO="/home/$USER/.config/autostart"
      STOP=0
      APPLI_START="Start"
   ;;
esac
mkdir -p $REPAUTO/save
if [ "$STOP" -eq 0 ]; then
   while true; do
      debut
      if [ $? -eq 1 ]; then
          break
      fi
   done
fi
zenity --info --title="Arrêt du traitement" --text="Traitement terminé"
exit

Hors ligne

#6 Le 10/05/2026, à 10:45

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

Mon test qui me renvoi uniquement le premier fichier dans $Liste alors que tous les fichiers sont bien énumérés par echo $fic

#!/bin/bash
declare -a Liste
function mylist # Liste des .desktop existant
{
  for i in $1/*.desktop
  do
      fic=${i##*/}
      echo $fic
      Liste+=( "$fic" )
  done
}
Rep=/home/$USER/.local/share/applications
mylist $Rep
echo $Liste

Hors ligne

#7 Le 10/05/2026, à 11:13

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

Dans ce cas $Liste est un tableau qui fonctionne, mais zenity n'accepte pas, il me semble, un tableau comme liste des éléments à afficher mais uniquement une variable qui contient les noms des éléments à afficher.
Je ne pense pas pouvoir passer par un tableau, sauf erreur de ma part

Hors ligne

#8 Le 10/05/2026, à 14:18

Watael

Re : script pour gérer les programmes au démarrage 25.10

Liste est une liste, c'est un type de variable spéciale.
ça s'utilise ainsi :

declare -a Liste #la déclaration est facultative
Liste=( 'a b' 'c d' e f )
echo "${Liste[0]}" #les listes indexées commencent par défaut à zéro
a b
echo "${Liste[-1]}"
f
echo "${Liste[@]}" 
a b c d e f
Liste+=( 'g h' )
printf '%s\n' "${Liste[@]}"
a b
c d
e
f
g h

il y a plus, regarde le man bash.

il existe des listes acssociatives :

declare -A assoListe
assoListe[abc]=ABC

etc
amuse-toi bien. wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 10/05/2026, à 18:59

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

ce système fonctionne parfaitement, mais dans mon cas je passe cette "Liste" en paramètre à zenity qui ne reconnait pas les tableaux
Dommage, c'était une excellente idée que je retiens pour l'avenir.

PROCESS=$(zenity --width=1380 --height=800 --list --text="Choisissez la Procédure à modifier ou à supprimer ou à ajouter" --column="Fichiers" $Liste)

Hors ligne

#10 Le 10/05/2026, à 20:34

Watael

Re : script pour gérer les programmes au démarrage 25.10

zenity ... "${Liste[@]}"

!


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 11/05/2026, à 07:32

LinuxBernard

Re : script pour gérer les programmes au démarrage 25.10

Super !!! Merci !
J'ai appris pas mal de chose utile !!!!
smile:)

Hors ligne