#1 Le 11/11/2024, à 15:42
- xunil2003
Script bash avec yad comment laisser le fenetre en permanance
Bonjour,
Je réaliser une script bash avec yad pour ouvrir et fermer un lecteur optique. Le problème est que lorsque que je clique sur valider le script ce ferme, normal c'est la fin du script, ors je voudrais savoir si il y a un moyen pour que la fenêtre reste afficher en permanence temps que l'utilisateur n'a pas cliquer sur quitter/cancel ?.
retour=$(yad --form --width=250 --title="$TITRE_FENETRE" --image="/usr/share/icons/Humanity/apps/24/utilities-terminal.svg" --text="Veuillez indiquer le périphérique ainsi qu'une action :" \
--form --field="Lecteur CD-Rom:CB" $v \
--field="Action:CB" Ejecter\!Inserer \
--button=gtk-cancel:1 \
--button=gtk-ok:2)
echo
echo "retour : $retour"
echo
if [ "$retour" == "" ]; then
#On quitte le script
echo "annuler"
exit
fi
peripherique=$(echo "$retour" | cut -d'|' -f1)
action=$(echo "$retour" | cut -d'|' -f2)
echo "peripherique : $peripherique"
echo "action : $action"
case $action in
"Ejecter")
echo
echo "==========================="
echo "Ejecter le Lecteur $peripherique"
echo "==========================="
echo
echo "eject $peripherique"
eject $peripherique
sleep 1
echo "eject $peripherique"
eject $peripherique
MSG="Lecteur $peripherique éjecté."
;;
Inserer)
echo
echo "==========================="
echo "Inserer le Lecteur $peripherique"
echo "==========================="
echo
echo "eject -t $peripherique"
eject -t $peripherique
MSG="Lecteur $peripherique inséré."
;;
"Lecteur par défaut")
echo
echo "=================="
echo "Lecteur par défaut"
echo "=================="
echo
echo "eject -d"
eject -d
;;
*)
echo "Erreur inatendu de action incorrect"
;;
esac
notify-send "$MSG"
exit 0
Merci d'avance.
Dernière modification par xunil2003 (Le 11/11/2024, à 16:40)
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#2 Le 11/11/2024, à 16:09
- Watael
Re : Script bash avec yad comment laisser le fenetre en permanance
ce n'est pas une question bash. Adapte ton titre, s'il te plaît.
pour yad, je ne sais pas.
d'ailleurs, quelle importance, pour toi ? edit: pas que je ne sache pas mais que la fenêtre se ferme quand elle a fini son travail
PS:
pour bash:
== n'a pas de sens entre crochets simples; ce n'est pas une erreur, c'est simplement inutile.
IFS='|' read peripherique action reste <<<"$retour"
Dernière modification par Watael (Le 11/11/2024, à 16:12)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 11/11/2024, à 16:47
- xunil2003
Re : Script bash avec yad comment laisser le fenetre en permanance
Re,
ok j'ai modifier le titre.
Oui c'est normal c'est la fin du script est la fenêtre ce ferme.
Ce que je voudrais savoir c'est y a t'il un moyen de laissé la fenêtre yad ouvert lorsque je clique sur valider et que la fenêtre puisse être fermé uniquement si l'utilisateur clique sur le bouton quitter, pour que l'utilisateur puisse cliquer sur éjecter ou insérer sans que la fenêtre yad ferme ?
Merci d'avance.
Dernière modification par xunil2003 (Le 11/11/2024, à 16:49)
- AMD R9 5950x 64 Go Ram / Intel Pentium I7 960 - 12 Go Ram - 6 T0 - Kubuntu 12.04 x64 / Kubuntu 14.04 x64 / Kubuntu 16.04 x64 / Kubuntu 18.04 x64 / Kubuntu 20.04 x64 / Mint
- DreamPlug Multi Boot / Marvel 1.22 Ghz / Architecture ARM / 512 Mo Ram / Carte-sd 16 Go class 10 / 5 Watts / Debian Squeeze 2.6.39.4
- Raspberry PI 1 / Raspberry PI 2 / Raspberry PI 3 / Raspberry PI 4 : 4Gb
JE SUIS CHARLIE
Hors ligne
#4 Le 11/11/2024, à 17:00
- iznobe
Re : Script bash avec yad comment laisser le fenetre en permanance
Bonjour , ben pour quoi tu ne fais pas une boucle infinie qui affiche un choix fermer / quitter / annuler selon tes besoins , tout simplement .
du genre , je ne code pas beaucoup en bash ni en yad d' ailleurs , alors je met du pseudo code :
while true :
echo cancel
echo quit
if choice == "quit" : return
mais le principe et le raisonnement reste le meme .
Dernière modification par iznobe (Le 11/11/2024, à 17:05)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#5 Le 11/11/2024, à 22:26
- Tawal
Re : Script bash avec yad comment laisser le fenetre en permanance
Hello,
Tu pourrais utiliser des boutons qui lancent les fonctions "Insérer" et "Éjecter".
Ces fonctions doivent être exportées pour pouvoir être appelées sous un bouton yad.
Un truc du genre :
#!/bin/bash
_insert()
{
# Actions pour insérer
echo "insert $1" >/dev/tty
}
_eject()
{
# Actions pour éjecter
echo "eject $1" >/dev/tty
}
export -f _insert _eject
yad --form --width=250 \
--title="titre" \
--text="Veuillez indiquer le périphérique ainsi qu'une action :" \
--field="Lecteur CD-Rom:CB" "^1!2!3" \
--field="Insérer":FBTN '@bash -c "_insert %1"' \
--field="Éjecter":FBTN '@bash -c "_eject %1"' \
--button=gtk-cancel:1 \
--button=gtk-ok:2
Edit:
Les boutons "à commandes" ne ferment pas la fenêtre, seuls les boutons OK et CANCEL le font.
Edit2:
le %1 dans '@bash -c "_insert %1"' se réfère à la valeur du 1er "field".
Edit3: Ce qui va se passer
Une fenêtre yad va apparaître avec une liste déroulante (choix du périphérique),
2 boutons "Insérer" et "Éjecter" (toute la largeur de la fenêtre ),
plus 2 autres boutons "normaux" (OK et CANCEL).
En cliquant sur un des 2 boutons "Insérer" ou "Éjecter",
ce bouton va exécuter la fonction qu'il appelle avec comme argument la valeur choisie dans la liste déroulante sans fermer la fenêtre yad.
Il est donc possible de faire une autre action ensuite.
Edit4:
Mise à jour du script exemple (plus explicite et testable dans un terminal).
Dernière modification par Tawal (Le 13/11/2024, à 23:29)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne