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 12/07/2023, à 13:46

jlfh0816

[Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

Bonjour,
Sur ma vieille Xubuntu 18.04, j’ai bidouillé (pas d'autre mot...) un petit script bash de diaporama. Il est certainement perfectible mais il fonctionne tel quel.
J’ai ensuite voulu lui associer un lanceur dans le tableau de bord, du type «démarrer et arrêter» : un clic pour lancer le diaporama et un autre clic sur le même lanceur pour l’arrêter et faire disparaître les images encore affichées sur le bureau.

C’est avec ce lanceur que je rencontre un problème.
En effet, la ligne de commande renseignée dedans (éditer le lanceur > commande) fonctionne très bien lorsque je l’exécute isolément dans un terminal mais pas du tout si je me contente de cliquer sur le lanceur du tableau de bord.
Pour contourner la difficulté, je peux cocher la case «exécuter dans un terminal» dans l’éditeur du lanceur et, là, tout fonctionne bien : un clic pour lancer le diaporama et un autre pour le stopper. Sauf bien sûr que, dans ce cas, une fenêtre de terminal est affichée au beau milieu de l’écran ce qui n’est pas très esthétique.
Je précise que cette fenêtre de terminal n’affiche aucun message d’erreur : son contenu est noir, entièrement vierge et sa bordure est grisée. Elle se ferme automatiquement dès la fin du diaporama.
Autre précision : le lanceur et le programme de diaporama ont bien les permissions d’être exécutés comme des programmes.
Enfin, dans la ligne de commande du lanceur, j’ai pris la précaution d’utiliser le chemin absolu (et non le chemin relatif).

Sur la toile, on trouve diverses suggestions pour tenter de résoudre ce genre de problème mais aucune n’a pu solutionner mon cas. Auriez-vous une idée de ce que je fais mal ?
Merci par avance de votre aide !



Le lanceur est situé dans le tableau de bord. La ligne de commande qu’il contient est celle-ci :

bash -c "/home/jlfh0816/toggle_diaporama"

Le programme toggle_diaporama auquel le lanceur se réfère est placé dans le répertoire $HOME. Il contient les lignes suivantes :

#!/bin/bash
# This shell script is PUBLIC DOMAIN. You may do whatever you want with it.
#https://askubuntu.com/questions/147080/shell-script-to-toggle-between-two-commands

TOGGLE=/home/jlfh0816/.toggle
	if [ ! -e "$TOGGLE" ]; then
       touch "$TOGGLE"
	pgrep -f "/home/jlfh0816/Images/ConkyCarousel/diaporama"
	for i in $(ps aux | grep "diaporama" | awk '{ print $2}')
	do kill -9 "$i" &>/dev/null;
done
else
    rm "$TOGGLE"
    bash /home/jlfh0816/Images/ConkyCarousel/diaporama
fi

Quant au programme principal diaporama, il est situé dans le dossier /home/jlfh0816/Images/ConkyCarousel/. Il ne contient que ces quelques lignes (en fait, il organise l’exécution d’une dizaine de sous-scripts appelés de diaporama1 à 10, chacun ne pilotant qu’une seule image) :

#!/bin/bash
bash ~/Images/ConkyCarousel/diaporama1 & bash ~/Images/ConkyCarousel/diaporama2 & bash ~/Images/ConkyCarousel/diaporama3 & bash ~/Images/ConkyCarousel/diaporama4 & bash ~/Images/ConkyCarousel/diaporama5 & bash ~/Images/ConkyCarousel/diaporama6 & bash ~/Images/ConkyCarousel/diaporama7 & bash ~/Images/ConkyCarousel/diaporama8 & bash ~/Images/ConkyCarousel/diaporama9 & bash ~/Images/ConkyCarousel/diaporama10

PS :
Je ne sais pas si cela est important ou pas mais je viens de m’apercevoir que le lanceur n’apparaît pas dans le dossier /home/jlfh0816/.local/share/applications
Est-ce normal ?

Dernière modification par jlfh0816 (Le 13/07/2023, à 20:18)


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#2 Le 12/07/2023, à 13:50

iznobe

Re : [Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

Bonjour voir cette discussion , peut etre ca t ' aidera : https://forum.ubuntu-fr.org/viewtopic.php?id=2079920


retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#3 Le 12/07/2023, à 13:58

jlfh0816

Re : [Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

Merci iznobe de ta rapide réponse.
J'avais bien vu cette discussion (d'où le titre de la mienne, très proche de celle-là  smile ) mais elle ne m'a pas permis de résoudre mon problème. Ceci dit, je l'ai peut-être lue trop vite (c'est plutôt pointu), je vais la revoir à nouveau pour être sûr.


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#4 Le 12/07/2023, à 21:31

kamaris

Re : [Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

Tel que décrit là ça devrait fonctionner, cela dit 18.04 c'est vieux (Xfce 4.14 ?), donc il se peut que les lanceurs du tableau de bord aient des bugs ou limitations qui ont disparus depuis.

Mais de toutes façons, tu n'as pas besoin de mettre

bash -c "/home/jlfh0816/toggle_diaporama"

il suffit de mettre

/home/jlfh0816/toggle_diaporama

dès lors que ce script est exécutable, comme il devrait l'être.

De même, inutile d'appeler les autres scripts par

bash script

il suffit de les appeler par

script
jlfh0816 a écrit :

PS :
Je ne sais pas si cela est important ou pas mais je viens de m’apercevoir que le lanceur n’apparaît pas dans le dossier /home/jlfh0816/.local/share/applications
Est-ce normal ?

Oui, les fichiers desktop des lanceurs du tableau de bord sont dans ~/.config/xfce4/panel/launcher-N/ où N est le numéro du lanceur.

Hors ligne

#5 Le 12/07/2023, à 22:43

jlfh0816

Re : [Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

Un grand merci kamaris de t'être penché sur mon problème.
Je vais bien entendu effectuer les simplifications que tu suggères.

Ceci dit, c'est tout penaud que je reviens poster car, après avoir repris de zéro toutes les étapes et même renommé différemment tous les scripts, le lanceur dans le tableau de bord fonctionne finalement très bien : un clic pour lancer le diaporama et un autre clic pour le stopper et faire disparaître toutes les images affichées.

Désolé d'avoir fait appel à la communauté pour rien.

Pour info, voici donc ce qui a fonctionné :

- les 10 images à afficher sont placées dans un dossier ~/Images/Diaporama/Final

- les 10 scripts élémentaires Diaporama1 jusqu’à Diaporama10 sont placés dans le dossier ~/Images/Diaporama

- le script principal Diaporama est lui aussi placé dans le dossier ~/Images/Diaporama

- le script «démarrer / arrêter» s’appelle maintenant Toggle.sh et il est lui aussi placé dans le dossier ~/Images/Diaporama
Ce script est le suivant :

#!/bin/sh
# This shell script is PUBLIC DOMAIN. You may do whatever you want with it.
#https://askubuntu.com/questions/147080/shell-script-to-toggle-between-two-commands

TOGGLE=$HOME/.Toggle

if [ ! -e $TOGGLE ]; then
    touch $TOGGLE
#    command1
pgrep -f "sh -c /home/jlfh0816/Images/Diaporama/Diaporama"
for i in `ps aux | grep Diaporama | awk '{ print $2}'`
do kill -9 $i
done
else
    rm $TOGGLE
#    command2
bash -c "/home/jlfh0816/Images/Diaporama/Diaporama"
sleep 1
fi

- le lanceur destiné à faciliter l’exécution du script Toggle.sh est créé par un clic droit sur le bureau et il est appelé lui aussi Toggle.sh. Pour compléter sa ligne de commande, j’ai cliqué à droite de celle-ci sur la petite icone réprésentant un dossier. Dans l’arborescence, j’ai sélectionné le script  ~/Images/Diaporama/Toggle.sh
Après validation et fermeture, un clic droit sur les propriétés du lanceur pour l’autoriser à être exécuté comme un programme.
Ensuite, ouverture du répertoire /home/Bureau où on clique droit sur l’icône du nouveau lanceur pour le renommer en .Toggle.sh (il n’y a que le point devant qui est ajouté à son nom).
Un nouveau clic droit sur ce lanceur désormais caché .Toggle.sh est effectué afin de sélectionner l’ouverture pour l’ajouter comme lanceur au tableau de bord 0.
Lorsqu’il est apparu dans le tableau de bord, un clic droit sur son icône permet d’afficher ses propriétés et de modifier la ligne de commande pour qu’elle contienne désormais :

sh -c "/home/jlfh0816/Images/Diaporama/Toggle.sh"

Après validation, on peut dès cet instant cliquer gauche sur ce lanceur dans le tableau de bord afin qu’il lance ou stoppe le diaporama.

Je ne comprends pas pourquoi tout cela n’a pas fonctionné la première fois...


Xubuntu - Voyager 18.04 et 22.04

Hors ligne

#6 Le 12/07/2023, à 22:55

kamaris

Re : [Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

for i in `ps aux | grep Diaporama | awk '{ print $2}'`
do kill -9 $i
done

devrait avantageusement pouvoir être remplacé par pkill -f Diaporama (normalement -9 ne devrait pas être nécessaire).

Hors ligne

#7 Le 13/07/2023, à 09:43

jlfh0816

Re : [Résolu] Xubuntu : commande OK dans terminal mais pas dans un lanceur

Bonjour kamaris

kamaris a écrit :
for i in `ps aux | grep Diaporama | awk '{ print $2}'`
do kill -9 $i
done

devrait avantageusement pouvoir être remplacé par pkill -f Diaporama (normalement -9 ne devrait pas être nécessaire).

Tu as raison. Je viens de vérifier et ça fonctionne aussi bien avec ta suggestion. Je l'adopte avec plaisir. Merci !


kamaris a écrit :

Mais de toutes façons, tu n'as pas besoin de mettre

bash -c "/home/jlfh0816/toggle_diaporama"

il suffit de mettre

/home/jlfh0816/toggle_diaporama

Pareil pour ton autre suggestion : ça fonctionne, j'adopte aussi.

Merci beaucoup !  big_smile


Xubuntu - Voyager 18.04 et 22.04

Hors ligne