YAD est un fork de Zenity.
J'ai ce script yad
:
#!/bin/bash
yad --text="Execute the file? (press 'Cancel' to open in text editor)"
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
Associé à un fichier de bureau en tant que lanceur d’applications, il peut être utilisé pour afficher une fenêtre lorsque vous cliquez sur un fichier (par exemple, un script, etc.).
Dans zenity, le nom des étiquettes peut être édité:
Le même script avec Zenity devrait ressembler à ceci:
#!/bin/bash
zenity --question --text="What to do?" \
--ok-label=Run \
--cancel-label=Edit
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
Et Run
et Edit
peuvent être modifiés.
Je pense que ici il dit que yad
a les moyens d'éditer les étiquettes:
--button = BOUTON: ID
Add the dialog button. May be used multiply times. ID is an exit code or a command. BUTTON may be gtk stock item name for predefined
des boutons (comme gtk-close ou gtk-ok) ou du texte sous la forme LABEL [! ICON [! TOOLTIP]] où `! ' est un séparateur d'objets. La liste complète des articles en stock se trouve dans le programme gtk-demo, dans un extrait appelé "Stock Items and Icon Browser". Si aucun bouton n'est spécifié, les boutons OK et Annuler sont utilisés. Voir la section Statut de sortie pour plus d'informations. Si ID a une valeur non numérique, il est traité comme une commande et un clic sur ce bouton ne ferme pas la boîte de dialogue.
Mais je ne suis pas sur. Et je ne sais pas quoi faire de cette information. J'ai besoin d'un exemple sur la manière dont les noms des boutons de mon script yad
peuvent être modifiés.
J'ai raisons utiliser yad
à la place de zenity
- le script zenity ne peut pas être renvoyé avec close ou Esc.
Je ne suis pas tout à fait sûr de ce que vous voulez dire, mais si je comprends bien, vous voulez quelque chose comme ça:
#!/bin/bash
yad --text="Execute the file?" --button="Execute" --button="Edit"
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
J'ai trouvé un lien ( buntuusers.de ), mais c'est en allemand. Il existe cependant quelques exemples de code et d’images qui pourraient vous aider. Et vous pouvez toujours le traduire avec Google.
J'aurais écrit cela comme un commentaire si je le pouvais, mais je ne suis pas encore autorisé à le faire. J'espère que ça aide.
Il m'est arrivé d'écrire ceci il y a quelques jours pour une question personnelle ( n modèle Bash permettant d'utiliser zenity (ou yad) pour insérer/modifier/supprimer des enregistrements dans un fichier ou une base de données ) et j'ai pensé que cela valait la peine partage:
Notez les six boutons à l’écran et leur traitement dans le code ci-dessous (désolé, il reste un travail en cours). Une remarque importante concerne l'utilisation de boutons personnalisés pour toujours intercepter les codes de retour par défaut, tels que 252 pour Échap et Fermeture de Windows (en cliquant sur X).
while true ; do
Record=(`yad \
--title "websync - Compare local scripts to those published on internet." --list \
--text '<span foreground="blue" font="14">Toggle select next to file then click action button</span>' \
--width=900 --height=600 --center --radiolist -separator="$IFS" --no-click \
--button="Insert before":1 --button=Edit:2 --button=Delete:3 --button=Run:4 \
--button="Cancel ALL":5 --button=Save:6 --search-column=3 \
--column "Select" --column "Record number" --hide-column=2 --column "File Name" \
--column "Status" --column " Website Address" \
"${choices[@]}"`)
Action=$?
RecSelected=false
RecArr=()
i=0
# With radio list only one choice is possible
for Field in "${Record[@]}" ; do
RecSelected=true
RecArr[i]=$Field
# echo "RecArr $i ${RecArr[$i]}"
((i++))
done
echo "button: $Action"#
# Note: When X closes window or Escape pressed 252 is returned.
# Insert before || or Edit ?
if [[ $Action == 1 ]] || [[ $Action == 2 ]] ; then
RecArr[3]="New"
# --text="Set fields and click OK to update"
# Note if there is a space at end of line, next line generates invalid command error from yad
yad --width=600 --height=400 --title="Link file to Website Address" \
--form --center \
--field="Record Number":RO --field="File name":FL --field="Status":RO \
--field="Website Address":TXT \
${RecArr[1]} ${RecArr[2]} ${RecArr[3]} ${RecArr[4]}
ret=$?
# Cancel =252, OK = 0
if [[ $ret == 0 ]] ; then
# Update array and renumber
: # noop
else
continue # cancel changes.
fi
Elif [[ $Action == 3 ]] ; then
: # Delete
Elif [[ $Action == 4 ]] ; then
: # Run
Elif [[ $Action == 5 ]] || [[ $Action == 252 ]] ; then
# Cancel ALL || or X the window or Escape
exit
Elif [[ $Action == 6 ]] ; then
# Save
exit
else
zenity --error --text "~/bin/websync - Unknown button return code: $Action"
fi
done # End of while loop