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 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 big_smile mais que la fenêtre se ferme quand elle a fini son travail wink

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.

Hors 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 sad),
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