Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| yad_yet_another_dialog [Le 14/07/2018, 11:17] – [Configuration] 80.215.113.109 | yad_yet_another_dialog [Le 24/07/2026, 22:30] (Version actuelle) – [Voir aussi] Zococo | ||
|---|---|---|---|
| Ligne 7: | Ligne 7: | ||
| // | // | ||
| - | **Yad** (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 |
| - | **Yad** est un fork de [[: | + | **Yad** est un fork de [[: |
| - | Ses avantages par rapport à Zenity sont l' | + | Ses avantages par rapport à Zenity sont l' |
| ===== Auteurs ===== | ===== Auteurs ===== | ||
| Ligne 24: | Ligne 24: | ||
| ===== Installation ===== | ===== Installation ===== | ||
| ==== Version des dépôts ==== | ==== Version des dépôts ==== | ||
| - | YAD est dans les dépôts à partir d' | ||
| Pour installer ce logiciel, il suffit d' | Pour installer ce logiciel, il suffit d' | ||
| - | Pour les versions d' | + | |
| ==== Avec un ppa ==== | ==== Avec un ppa ==== | ||
| - | Pour installer une version récente de YAD, ou si vous avez une version Ubuntu antérieur à 16.04, alors vous pouvez installer YAD avec le PPA de webupd8, en une ligne : | + | Pour installer une version récente de YAD, vous pouvez installer YAD avec le PPA de webupd8, en une ligne (obsolète : pas de version au delà de Vivid) |
| < | < | ||
| - | |||
| - | |||
| ==== Par compilation ==== | ==== Par compilation ==== | ||
| Ligne 41: | Ligne 38: | ||
| Vous devrez peut-être installer gcc, libwebkitgtk-dev | Vous devrez peut-être installer gcc, libwebkitgtk-dev | ||
| - | Pour avoir la dernière version, télécharger l' | + | Pour avoir la dernière version, télécharger l' |
| Décompressez-la ou vous voulez. | Décompressez-la ou vous voulez. | ||
| Ouvrez un terminal | Ouvrez un terminal | ||
| Ligne 51: | Ligne 48: | ||
| </ | </ | ||
| < | < | ||
| - | L' | + | L' |
| - | Il vous faut également activer le widget --html. | + | Il vous faut également activer le widget |
| - | Procèder | + | Procéder |
| </ | </ | ||
| < | < | ||
| Ligne 79: | Ligne 76: | ||
| | Affichage | | Affichage | ||
| | Affichage | | Affichage | ||
| - | | Affichage | + | | Affichage |
| | Affichage | | Affichage | ||
| | Affichage | | Affichage | ||
| | Affichage | | Affichage | ||
| | Affichage | | Affichage | ||
| - | | Multiples | + | | Multiples |
| | Multiples | | Multiples | ||
| | Multiple |'' | | Multiple |'' | ||
| Ligne 93: | 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[: | + | %%--%%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^ | ||
| - | | |Les entrée | + | | |Les entrées |
| - | |BTN |Champ bouton libre. L’étiquette du bouton est un texte saisi selon la convent d’écriture suivante : Etiquette[!Icone[!Infobulle]]. Le séparateur est le caractère !. (point d’exclamation). L’étiquette est un texte ou un identifiant gtk. Icône est un fichier icône (identifiant ou nom de fichier). L’infobulle est un paramètre optionnel correspondant à une fenêtre surgissante d’aide qui apparaît au survol du bouton. Il est possible d’affecter une commande au bouton. Dans ce cas, le symbole spécial%N d’une commande est remplacé par la valeur du champ N. Si la commande débute par le caractère @ (arobase), la sortie de la commande sera parsé | + | |BTN |Champ bouton libre. L’étiquette du bouton est un texte saisi selon la convent d’écriture suivante : Etiquette[!Icone[!Infobulle]]. Le séparateur est le caractère !. (point d’exclamation). L’étiquette est un texte ou un identifiant gtk. Icône est un fichier icône (identifiant ou nom de fichier). L’infobulle est un paramètre optionnel correspondant à une fenêtre surgissante d’aide qui apparaît au survol du bouton. Il est possible d’affecter une commande au bouton. Dans ce cas, le symbole spécial%N d’une commande est remplacé par la valeur du champ N. Si la commande débute par le caractère @ (arobase), la sortie de la commande sera parsée |
| |CB |Boîte déroulante. Les valeurs possibles sont saisies sous la forme VAL1!VAL2 !… Le séparateur est identique au séparateur des champs numériques. La valeur précédée du caractère ∧ correspond à la valeur par défaut.| | |CB |Boîte déroulante. Les valeurs possibles sont saisies sous la forme VAL1!VAL2 !… Le séparateur est identique au séparateur des champs numériques. La valeur précédée du caractère ∧ correspond à la valeur par défaut.| | ||
| |CBE |Boîte déroulante éditable. Valeurs initiales saisies selon les mêmes règles que pour la boîte déroulante standard. D' | |CBE |Boîte déroulante éditable. Valeurs initiales saisies selon les mêmes règles que pour la boîte déroulante standard. D' | ||
| Ligne 105: | Ligne 102: | ||
| |CHK |Case à cocher. La valeur initiale est une constante insensible à la casse (TRUE ou FALSE)| | |CHK |Case à cocher. La valeur initiale est une constante insensible à la casse (TRUE ou FALSE)| | ||
| |CLR |Boîte de sélection de couleur. La valeur par défaut de la couleur peut être saisie au format hexadécimal (#FF0000 par exemple). La boîte de dialogue est moins sophistiquée que le champ yad –color qui affiche une roue des couleurs et des champs de saisie numérique.| | |CLR |Boîte de sélection de couleur. La valeur par défaut de la couleur peut être saisie au format hexadécimal (#FF0000 par exemple). La boîte de dialogue est moins sophistiquée que le champ yad –color qui affiche une roue des couleurs et des champs de saisie numérique.| | ||
| - | |DIR |Bouton de sélection de répertoire dans l’arborescence. Ne permet pas la saise d’un nom de répertoire qui ne figure pas dans l’arborescence (voir option CDIR).| | + | |DIR |Bouton de sélection de répertoire dans l’arborescence. Ne permet pas la saisie |
| |DT |Champ date.| | |DT |Champ date.| | ||
| |FBTN |Identique au champ BTN, le bouton étant en relief.| | |FBTN |Identique au champ BTN, le bouton étant en relief.| | ||
| - | |FL |Bouton de sélection de fichier dans l’arborescence. Ne permet pas la saise d’un nom de fichier qui ne figure pas dans l’arborescence (voir option SFL).| | + | |FL |Bouton de sélection de fichier dans l’arborescence. Ne permet pas la saisie |
| |FN |Boîte de sélection de police de caractère. Les polices de caractère sont saisies sous la forme Famille Style Taille (exemple : Sans Bold 13). La boîte de dialogue est moins sophistiquée que le champ yad –font.| | |FN |Boîte de sélection de police de caractère. Les polices de caractère sont saisies sous la forme Famille Style Taille (exemple : Sans Bold 13). La boîte de dialogue est moins sophistiquée que le champ yad –font.| | ||
| |H |Champ caché. Tous les caractères saisis apparaissent sous la forme d’un caractère invisible (souvent un point). Permet la saisie discrète d’un mot de passe.| | |H |Champ caché. Tous les caractères saisis apparaissent sous la forme d’un caractère invisible (souvent un point). Permet la saisie discrète d’un mot de passe.| | ||
| Ligne 114: | Ligne 111: | ||
| |MDIR |Bouton de sélection de plusieurs répertoires dans l’arborescence. Les noms de répertoires apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de répertoires qui ne figure pas dans l’arborescence.| | |MDIR |Bouton de sélection de plusieurs répertoires dans l’arborescence. Les noms de répertoires apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de répertoires qui ne figure pas dans l’arborescence.| | ||
| |MFL |Bouton de sélection de plusieurs fichiers dans l’arborescence. Les noms de fichiers apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de fichier qui ne figure pas dans l’arborescence.| | |MFL |Bouton de sélection de plusieurs fichiers dans l’arborescence. Les noms de fichiers apparaîtront séparés par des virgules. Ne permet pas la saisie d’un nom de fichier qui ne figure pas dans l’arborescence.| | ||
| - | |NUM |Valeur numérique. Formatage possible : Valeur[!Echelle[!Pas[!Précision]]]. L’échelle des valeurs se présente sous la forme Min..Max. La précision | + | |NUM |Valeur numérique. Formatage possible : Valeur[!Echelle[!Pas[!Précision]]]. L’échelle des valeurs se présente sous la forme Min..Max. La précision |
| |RO |Champ en mode lecture seule.| | |RO |Champ en mode lecture seule.| | ||
| |SCL |Échelle (réglette). Valeur comprise entre 0 et 100.| | |SCL |Échelle (réglette). Valeur comprise entre 0 et 100.| | ||
| Ligne 120: | Ligne 117: | ||
| |TXT |Entrée texte multiligne. Occupe l’ensemble de la surface du formulaire.| | |TXT |Entrée texte multiligne. Occupe l’ensemble de la surface du formulaire.| | ||
| ===== Exemples ===== | ===== Exemples ===== | ||
| - | [[https:// | + | Avant de vous lancer dans la lecture, notez que vous trouverez de nombreux exemples, simples et complexes avec ces liens : |
| + | * [[https:// | ||
| + | * [[https:// | ||
| ====--calendar==== | ====--calendar==== | ||
| Dans cet exemple le calendrier s' | Dans cet exemple le calendrier s' | ||
| - | --title=" | + | %%--%%title=" |
| - | --window-icon=" | + | %%--%%window-icon=" |
| < | < | ||
| jour=$(date +%d) | jour=$(date +%d) | ||
| Ligne 151: | Ligne 150: | ||
| #!/bin/bash | #!/bin/bash | ||
| recherche=$(yad --entry --title=' | recherche=$(yad --entry --title=' | ||
| - | recherche=$(echo "$recherche" | sed 's/ /+/g') | + | recherche=${recherche// /+} |
| - | xdg-open https:// | + | xdg-open |
| </ | </ | ||
| ====--form==== | ====--form==== | ||
| - | C'est ici que Yad devient | + | C'est ici que Yad devient |
| Deux exemples récapitulatifs : | Deux exemples récapitulatifs : | ||
| Ligne 164: | Ligne 163: | ||
| {{:: | {{:: | ||
| - | et (un seul formulaireavec | + | et (un seul formulaire avec toutes les options risque de dépasser les dimensions de votre écran) : |
| < | < | ||
| retour=$(yad --form | retour=$(yad --form | ||
| Ligne 170: | Ligne 169: | ||
| </ | </ | ||
| {{:: | {{:: | ||
| + | |||
| + | <note tip>Voir [[https:// | ||
| Si l'on reprend l' | Si l'on reprend l' | ||
| Ligne 178: | Ligne 179: | ||
| --field=" | --field=" | ||
| --field=" | --field=" | ||
| - | rech=$(echo $search | awk 'BEGIN {FS=" | + | rech=$(echo |
| - | moteur=$(echo $search | awk 'BEGIN {FS=" | + | moteur=$(echo |
| if [ " | if [ " | ||
| then | then | ||
| Ligne 193: | Ligne 194: | ||
| Affiche une icône dans la zone de notification du panel (le systray). | Affiche une icône dans la zone de notification du panel (le systray). | ||
| - | Un exemple concret tout simple, qui affiche une icône et quitte lorsqu' | + | Un exemple concret tout simple, qui affiche une icône et quitte lorsqu' |
| < | < | ||
| - | On peux changer l' | + | On peux changer l’icône |
| < | < | ||
| < | < | ||
| - | Exemple avec un script faisant les mises à jour et affichant avec un 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 : |
| - | < | + | < |
| + | #!/bin/bash | ||
| MSG=" | MSG=" | ||
| notify-send " | notify-send " | ||
| - | 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=" | faireMaJ | yad --notification --no-middle --text=" | ||
| - | exit 0</ | + | </ |
| {{:: | {{:: | ||
| - | La liste des noms d' | + | La liste des noms d’icônes |
| Quelques exemples du site officiel : [[https:// | Quelques exemples du site officiel : [[https:// | ||
| - | Reprenons l' | + | Reprenons l' |
| < | < | ||
| #!/bin/bash | #!/bin/bash | ||
| Ligne 235: | Ligne 237: | ||
| --field=" | --field=" | ||
| --field=" | --field=" | ||
| - | rech=$(echo $search | awk 'BEGIN {FS=" | + | rech=$(echo |
| - | moteur=$(echo $search | awk 'BEGIN {FS=" | + | moteur=$(echo |
| if [ " | if [ " | ||
| then | then | ||
| Ligne 256: | Ligne 258: | ||
| #!/bin/bash | #!/bin/bash | ||
| #####ID --KEY Création aléatoire de l' | #####ID --KEY Création aléatoire de l' | ||
| - | id=$(echo $[($RANDOM % ($[10000 - 32000] + 1)) + 10000] ) | + | id=$(($RANDOM % ($((10000 - 32000)) + 1) + 10000)) |
| ########## | ########## | ||
| #####Avec une colonne####### | #####Avec une colonne####### | ||
| Ligne 287: | Ligne 289: | ||
| fi | fi | ||
| </ | </ | ||
| - | ===== Trucs et astuces ===== | ||
| - | ==== États de sorties==== | ||
| - | 0 L' | ||
| + | ====--list==== | ||
| + | Des cases à cocher. | ||
| + | Choisir un item dans une liste : | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | # Affichage du contenu du fichier sélectionné | ||
| + | function usage { | ||
| + | echo " | ||
| + | echo "Un unique fichier sélectionné" | ||
| + | echo " | ||
| + | } | ||
| + | if [[ " | ||
| + | usage | ||
| + | else | ||
| + | retour=$(yad --title=" | ||
| + | cat " | ||
| + | fi | ||
| + | </ | ||
| + | {{ : | ||
| + | Et pour pourvoir sélectionner plusieurs lignes à la fois : | ||
| + | < | ||
| + | retour=$(yad --title=" | ||
| + | lesFichiers=$(echo " | ||
| + | for i in $lesFichiers; | ||
| + | cat " | ||
| + | done | ||
| + | </ | ||
| + | {{ : | ||
| + | <note tip>Bien qu' | ||
| + | ===== Pango Markup Language - mettre en forme un texte ===== | ||
| + | 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 < | ||
| - | 1 L'utilisateur a appuyé sur le bouton Annuler | + | Quelques balises inspirées du html existent aussi (sans balise < |
| + | |||
| + | La liste des balises autorisées se trouvent ici : [[https:// | ||
| + | |||
| + | Exemples : | ||
| + | |||
| + | **font_desc** : '' | ||
| + | |||
| + | **font_desc** : '' | ||
| + | |||
| + | **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' | ||
| - | 70 La boîte de dialogue a été fermée parce que le délai d'attente | + | **1** : L'utilisateur |
| + | **70** : La boîte de dialogue a été fermée parce que le délai d' | ||
| - | 252 La boîte de dialogue a été fermé | + | **252** : La boîte de dialogue a été fermée |
| Ligne 321: | Ligne 368: | ||
| echo " | echo " | ||
| </ | </ | ||
| - | Comme vous le constaté | + | Comme vous le constatez |
| 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 327: | Ligne 374: | ||
| Pour ce faire nous allons utiliser la [[: | Pour ce faire nous allons utiliser la [[: | ||
| - | Je me sert de [[: | + | Je me sers de [[: |
| < | < | ||
| #!/bin/bash | #!/bin/bash | ||
| Ligne 347: | Ligne 394: | ||
| ====Les boutons.==== | ====Les boutons.==== | ||
| ===Comportements=== | ===Comportements=== | ||
| - | Il y-a deux types de comportements: | + | Il y a deux types de comportements: |
| Si la sortie est numérique, la fenêtre se ferme. | Si la sortie est numérique, la fenêtre se ferme. | ||
| Ligne 366: | Ligne 413: | ||
| yad --width=" | yad --width=" | ||
| </ | </ | ||
| - | L' | + | L’icône |
| + | |||
| + | ===Fermer la fenêtre et lancer une action=== | ||
| + | Il est possible d' | ||
| + | < | ||
| + | yad --form --field " | ||
| + | </ | ||
| + | Dans cet exemple simple, l' | ||
| + | < | ||
| + | function bonjour () { echo " | ||
| + | export -f bonjour | ||
| + | yad --form --field " | ||
| + | </ | ||
| + | Dans cet autre exemple, on crée une fonction toute simple qui affiche le nom de l' | ||
| + | |||
| + | Ce numéro pid (process identification digit) peut être utilisé pour fermer la fenêtre yad si le bouton appelle un script. En effet, comme indiqué ci-dessus, si la sortie du bouton n'est pas numérique, l' | ||
| + | < | ||
| + | function ferme_yad () { bonjour ; PidYad=$(pgrep yad); kill -s SIGUSR1 " | ||
| + | export -f ferme_yad | ||
| + | yad --form --field " | ||
| + | </ | ||
| ====Récupérer les sorties dans les boîtes multiples.==== | ====Récupérer les sorties dans les boîtes multiples.==== | ||
| Dans les boîtes multiples la sortie standard sera de type champ1|champ2|champ3| où " | Dans les boîtes multiples la sortie standard sera de type champ1|champ2|champ3| où " | ||
| Ligne 387: | Ligne 454: | ||
| echo " | echo " | ||
| </ | </ | ||
| + | Une autre méthode consiste à éclater l' | ||
| + | < | ||
| + | usr@pc:~$ ANC_IFS=" | ||
| + | usr@pc:~$ echo " | ||
| + | usr@pc:~$ echo " | ||
| + | usr@pc:~$ echo " | ||
| + | </ | ||
| + | Explications : | ||
| + | * ANC_IFS=" | ||
| + | * IFS=' | ||
| + | * read -ra LesParametres <<< | ||
| + | * IFS=" | ||
| + | * Pour accéder à la valeur de chaque champ, il suffit d' | ||
| ==== Gestion d' | ==== Gestion d' | ||
| - | L' | + | L' |
| < | < | ||
| usr@pc: | usr@pc: | ||
| Ligne 403: | Ligne 483: | ||
| ===== Voir aussi ===== | ===== Voir aussi ===== | ||
| - | * **(en)** [[https:// | + | |
| - | * **(en)** [[https:// | + | * **(en)** [[https:// |
| - | * **(en)** [[https:// | + | |
| + | * **(en)** [[https:// | ||
| + | * **(en)** [[http:// | ||
| + | * **(en)** [[http:// | ||
| * **(en)** [[https:// | * **(en)** [[https:// | ||
| - | | + | * [[zenity|Zenity]] |
| - | * **(en)** [[http:// | + | |
| - | + | ||
| ---- | ---- | ||
| - | // | + | // |
| //Basé sur [[http:// | //Basé sur [[http:// | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
