Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
yad_yet_another_dialog [Le 05/11/2019, 13:19] 37.166.64.124 [Types de fenêtres] |
yad_yet_another_dialog [Le 28/09/2022, 21:04] (Version actuelle) Amiralgaby correction de certain script shell repéré grâce à wiki-corrector |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
**Yad** (« Yet Another Dialog », « encore une boîte de dialogue ») est un outil pour créer des boîtes de dialogue graphiques à partir de scripts shell. | **Yad** (« Yet Another Dialog », « encore une boîte de dialogue ») est un outil pour créer des boîtes de dialogue graphiques à partir de scripts shell. | ||
- | **Yad** est un fork de [[:Zenity|Zenity]] | + | **Yad** est un fork de [[:Zenity|Zenity]]. |
- | Ses avantages par rapport à Zenity sont l'intégration de plusieurs contrôles sur une même fenêtre (voir le paramètre --form) | + | Ses avantages par rapport à Zenity sont l'intégration de plusieurs contrôles sur une même fenêtre (voir le paramètre %%--%%form) |
===== Auteurs ===== | ===== Auteurs ===== | ||
Ligne 49: | Ligne 49: | ||
<note> | <note> | ||
L'auteur fourni une petite application qui permet de lister les icônes pouvant être utilisées. | L'auteur fourni une petite application qui permet de lister les icônes pouvant être utilisées. | ||
- | Il vous faut également activer le widget --html. | + | Il vous faut également activer le widget %%--%%html. |
Procèder comme suit pour les installer. | Procèder comme suit pour les installer. | ||
</note> | </note> | ||
Ligne 90: | Ligne 90: | ||
==== Types de champs de la fenêtre form (formulaire) ==== | ==== Types de champs de la fenêtre form (formulaire) ==== | ||
Les formulaires permettent de décliner les différentes options de yad dans la même fenêtre. | Les formulaires permettent de décliner les différentes options de yad dans la même fenêtre. | ||
- | Les types de champs de formulaire sont saisis sous la forme | + | Les types de champs de formulaire sont saisis sous la forme |
- | --field="LABEL"[:TYPE] | + | %%--%%field="LABEL"[:TYPE] |
Les types de champs sont les suivants : H, RO, NUM, CHK, CB, CBE, CE, FL, SFL, DIR, CDIR, FN, MFL, MDIR, DT, SCL, CLR, BTN, FBTN, LBL, TXT. || | Les types de champs sont les suivants : H, RO, NUM, CHK, CB, CBE, CE, FL, SFL, DIR, CDIR, FN, MFL, MDIR, DT, SCL, CLR, BTN, FBTN, LBL, TXT. || | ||
^Type de champ^ Utilisation^ | ^Type de champ^ Utilisation^ | ||
Ligne 123: | Ligne 123: | ||
Dans cet exemple le calendrier s'ouvrira à la date du jour et la sortie sera de format sam./27/juil./2019/ | Dans cet exemple le calendrier s'ouvrira à la date du jour et la sortie sera de format sam./27/juil./2019/ | ||
- | --title="Titre de la fenêtre": Indique le titre de votre fenêtre. | + | %%--%%title="Titre de la fenêtre": Indique le titre de votre fenêtre. |
- | --window-icon="yad": Affiche une icône dans la barre du titre (Selon votre thème.) et sur le bouton de la liste des fenêtres. | + | %%--%%window-icon="yad": Affiche une icône dans la barre du titre (Selon votre thème.) et sur le bouton de la liste des fenêtres. |
<code> | <code> | ||
jour=$(date +%d) | jour=$(date +%d) | ||
Ligne 150: | Ligne 150: | ||
#!/bin/bash | #!/bin/bash | ||
recherche=$(yad --entry --title='Recherche web' --text='Tapez votre recherche' --text-align="center" --no-escape --mouse --undecorated --skip-taskbar --on-top) | recherche=$(yad --entry --title='Recherche web' --text='Tapez votre recherche' --text-align="center" --no-escape --mouse --undecorated --skip-taskbar --on-top) | ||
- | recherche=$(echo "$recherche" | sed 's/ /+/g') | + | recherche=${recherche// /+} |
- | xdg-open https://www.google.fr/search?q="$recherche"\&site=webhp\&source=lnt\&tbs=lr:lang_1fr\&lr=lang_fr | + | xdg-open "https://www.google.fr/search?q=$recherche&site=webhp&source=lnt&tbs=lr:lang_1fr&lr=lang_fr" |
</code> | </code> | ||
====--form==== | ====--form==== | ||
Ligne 179: | Ligne 179: | ||
--field="recherche:" '' \ | --field="recherche:" '' \ | ||
--field="Moteur:CB" 'Forum ubuntu!^Google fr') | --field="Moteur:CB" 'Forum ubuntu!^Google fr') | ||
- | rech=$(echo $search | awk 'BEGIN {FS="|" } { print $1 }') | + | rech=$(echo "$search" | awk 'BEGIN {FS="|" } { print $1 }') |
- | moteur=$(echo $search | awk 'BEGIN {FS="|" } { print $2 }') | + | moteur=$(echo "$search" | awk 'BEGIN {FS="|" } { print $2 }') |
if [ "$moteur" = "Forum ubuntu" ] | if [ "$moteur" = "Forum ubuntu" ] | ||
then | then | ||
Ligne 197: | Ligne 197: | ||
<code>yad --notification</code> | <code>yad --notification</code> | ||
- | On peux changer l’icône avec le paramètre **--image** | + | On peux changer l’icône avec le paramètre **%%--%%image** |
<code>yad --notification --image="gtk-help"</code> | <code>yad --notification --image="gtk-help"</code> | ||
<code>yad --notification --image="system-software-update"</code> | <code>yad --notification --image="system-software-update"</code> | ||
Exemple avec un script faisant les mises à jour et affichant avec une icône dans la zone de notification pour le signaler : | Exemple avec un script faisant les mises à jour et affichant avec une icône dans la zone de notification pour le signaler : | ||
- | <code>#!/bin/bash | + | <code> |
+ | #!/bin/bash | ||
MSG="Mise à jour du système en cours, n'éteignez pas l'ordinateur..." | MSG="Mise à jour du système en cours, n'éteignez pas l'ordinateur..." | ||
notify-send "$MSG" | notify-send "$MSG" | ||
- | faireMaJ () { (sudo apt update ; sudo apt full-upgrade) > /dev/null; quit ; } | + | faireMaJ () { (sudo apt update ; sudo apt full-upgrade) > /dev/null; } |
faireMaJ | yad --notification --no-middle --text="$MSG" --image="system-software-update" --command="zenity --info --text \"$MSG\"" --listen | faireMaJ | yad --notification --no-middle --text="$MSG" --image="system-software-update" --command="zenity --info --text \"$MSG\"" --listen | ||
- | exit 0</code> | + | </code> |
{{::yad.3.png?400|}} | {{::yad.3.png?400|}} | ||
Ligne 236: | Ligne 237: | ||
--field="recherche:" '' \ | --field="recherche:" '' \ | ||
--field="Moteur:CB" 'Forum ubuntu!^Google fr') | --field="Moteur:CB" 'Forum ubuntu!^Google fr') | ||
- | rech=$(echo $search | awk 'BEGIN {FS="|" } { print $1 }') | + | rech=$(echo "$search" | awk 'BEGIN {FS="|" } { print $1 }') |
- | moteur=$(echo $search | awk 'BEGIN {FS="|" } { print $2 }') | + | moteur=$(echo "$search" | awk 'BEGIN {FS="|" } { print $2 }') |
if [ "$moteur" = "Forum ubuntu" ] | if [ "$moteur" = "Forum ubuntu" ] | ||
then | then | ||
Ligne 257: | Ligne 258: | ||
#!/bin/bash | #!/bin/bash | ||
#####ID --KEY Création aléatoire de l'id | #####ID --KEY Création aléatoire de l'id | ||
- | id=$(echo $[($RANDOM % ($[10000 - 32000] + 1)) + 10000] ) | + | id=$(($RANDOM % ($((10000 - 32000)) + 1) + 10000)) |
##########Onglet 1########## | ##########Onglet 1########## | ||
#####Avec une colonne####### | #####Avec une colonne####### | ||
Ligne 304: | Ligne 305: | ||
else | else | ||
retour=$(yad --title="Fichier à afficher" --width 800 --height 200 --text-align="center" --list --radiolist --column="Sélectionné" --column="Fichier" --column="Mis à jour" --column="Utillisé" False "$HOME/Documents/FichierUn" "Non" "Non" False "$HOME/Documents/FichierDEux" "Oui" "Non" True "$HOME/Documents/FichierTrois" "Oui" "Non") | retour=$(yad --title="Fichier à afficher" --width 800 --height 200 --text-align="center" --list --radiolist --column="Sélectionné" --column="Fichier" --column="Mis à jour" --column="Utillisé" False "$HOME/Documents/FichierUn" "Non" "Non" False "$HOME/Documents/FichierDEux" "Oui" "Non" True "$HOME/Documents/FichierTrois" "Oui" "Non") | ||
- | cat $(echo "$retour" | cut -d'|' -f2) | + | cat "$(echo "$retour" | cut -d'|' -f2)" |
fi | fi | ||
- | exit 0; | ||
</code> | </code> | ||
{{ :yad_disco_00_radiolist.png?direct&800 |}} | {{ :yad_disco_00_radiolist.png?direct&800 |}} | ||
Ligne 319: | Ligne 319: | ||
{{ :yad_disco_01_checklist.png?direct&800 |}} | {{ :yad_disco_01_checklist.png?direct&800 |}} | ||
<note tip>Bien qu'étant qualifiée d'obsolète par certains sites, l'option --radiolist permet donc de limiter la sélection à un seul choix quand --checklist permet d'en faire plusieurs. Une autre manière de pouvoir sélectionner plusieurs items sans afficher de case à cocher consite à utiliser l'option --multiple avec --list.</note> | <note tip>Bien qu'étant qualifiée d'obsolète par certains sites, l'option --radiolist permet donc de limiter la sélection à un seul choix quand --checklist permet d'en faire plusieurs. Une autre manière de pouvoir sélectionner plusieurs items sans afficher de case à cocher consite à utiliser l'option --multiple avec --list.</note> | ||
- | ===== Trucs et astuces ===== | + | ===== Pango Markup Language - mettre en forme un texte ===== |
- | ==== États de sorties==== | + | Le langage de Markup Pango est un langage de mise en forme très simple qui est supporté par Yad. Il permet de mettre en forme le texte via des balises <span></span>. |
- | 0 L'utilisateur a appuyé sur le bouton OK | + | |
+ | Quelques balises inspirées du html existent aussi (sans balise <span>) : <b> pour gras, <u> pour souligné ... | ||
- | 1 L'utilisateur a appuyé sur le bouton Annuler | + | La liste des balises autorisées se trouvent ici : [[https://developer.gnome.org/pygtk/stable/pango-markup-language.html]] |
+ | |||
+ | Exemples : | ||
+ | |||
+ | **font_desc** : ''%%--%%text="une <span font_desc='Sans italic 10'>Maison</span> neuve"'' affiche le mot **maison** dans une police ''sans'', en italique, avec une taille de 10. | ||
+ | |||
+ | **font_desc** : ''%%--%%text="une <span font_desc='Sans italic 10' strikethrough='true'>Maison</span> neuve"'' affiche le mot **maison** dans une police ''sans'', en italique, avec une taille de 10 et barrée (strikethrough) | ||
+ | |||
+ | **souligné** : ''%%--%%text="une <u>Maison</u> neuve"'' affiche le mot **maison** en souligné. | ||
+ | |||
+ | |||
+ | ===== Trucs et astuces ===== | ||
+ | ==== États de sorties==== | ||
+ | Voilà le code (testable) renvoyé par **yad** quand on appuie sur certains boutons pour quitter une boite de dialogue : | ||
+ | **0** : L'utilisateur a appuyé sur le bouton OK | ||
- | 70 La boîte de dialogue a été fermée parce que le délai d'attente a été atteint. (Dans le cas d'un timeout) | + | **1** : L'utilisateur a appuyé sur le bouton Annuler |
+ | **70** : La boîte de dialogue a été fermée parce que le délai d'attente a été atteint. (Dans le cas d'un timeout) | ||
- | 252 La boîte de dialogue a été fermée en appuyant sur la touche Echap ou en cliquant sur le bouton de fermeture de la barre du titre de la boîte de dialogue | + | **252** : La boîte de dialogue a été fermée en appuyant sur la touche Echap ou en cliquant sur le bouton de fermeture de la barre du titre de la boîte de dialogue |
Ligne 353: | Ligne 368: | ||
echo "$?" | echo "$?" | ||
</code> | </code> | ||
- | Comme vous le constaté la fenêtre se ferme mais le script continu. | + | Comme vous le constatez la fenêtre se ferme mais le script continu. |
Personnellement lorsque je clique sur le bouton de fermeture, le bouton Annuler ou la touche Echap je veux arrêter le script. | Personnellement lorsque je clique sur le bouton de fermeture, le bouton Annuler ou la touche Echap je veux arrêter le script. | ||
Ligne 401: | Ligne 416: | ||
===Fermer la fenêtre et lancer une action=== | ===Fermer la fenêtre et lancer une action=== | ||
- | Il est possible d'affecter une action à un bouton yad. | + | Il est possible d'affecter une action à un bouton yad. |
<code> | <code> | ||
yad --form --field "Bouton 1:btn" --field "Bouton 2:btn" --field "Bouton 3:btn" "echo 'bouton n°1 cliqué'" "echo 'bouton n°2 cliqué'" "echo 'bouton n°3 cliqué'" | yad --form --field "Bouton 1:btn" --field "Bouton 2:btn" --field "Bouton 3:btn" "echo 'bouton n°1 cliqué'" "echo 'bouton n°2 cliqué'" "echo 'bouton n°3 cliqué'" | ||
Ligne 453: | Ligne 468: | ||
* Pour accéder à la valeur de chaque champ, il suffit d'accéder à la case d'indice correspondant dans le tableau $LesParametres qui est affichée par ${LesParametres[i]} ou i est l'indice de la case. | * Pour accéder à la valeur de chaque champ, il suffit d'accéder à la case d'indice correspondant dans le tableau $LesParametres qui est affichée par ${LesParametres[i]} ou i est l'indice de la case. | ||
==== Gestion d'erreur : Gtk-Message ==== | ==== Gestion d'erreur : Gtk-Message ==== | ||
- | L'utilisation de fenêtres gtk génère l'affichage d'un message d'erreur dans la console. | + | L'utilisation de fenêtres gtk génère l'affichage d'un message d'erreur dans la console. |
<code> | <code> | ||
usr@pc:~/Rep$ Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. | usr@pc:~/Rep$ Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. | ||
Ligne 475: | Ligne 490: | ||
* **(en)** [[http://www.thelinuxrain.com/articles/multiple-item-data-entry-with-yad|Exemples sur les items multiples]] | * **(en)** [[http://www.thelinuxrain.com/articles/multiple-item-data-entry-with-yad|Exemples sur les items multiples]] | ||
* **(en)** [[https://pypi.python.org/pypi?name=yad&version=0.9.3&:action=display|Ajouter Yad à vos scripts Python (non testé)]] | * **(en)** [[https://pypi.python.org/pypi?name=yad&version=0.9.3&:action=display|Ajouter Yad à vos scripts Python (non testé)]] | ||
- | + | ||
---- | ---- | ||
- | //Contributeurs principaux : [[sergeG75018]], LukePerp.// | + | //Contributeurs principaux : [[sergeG75018]], LukePerp., [[utilisateurs:amiralgaby]]// |
//Basé sur [[http://manpages.ubuntu.com/manpages/wily/man1/yad.1.html|« les pages du manuel »]].// | //Basé sur [[http://manpages.ubuntu.com/manpages/wily/man1/yad.1.html|« les pages du manuel »]].// | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- |