Quitter le forum et retourner au site

YAD ou donner une interface graphique à vos scipts

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
Ennoia
Messages : 138
Inscription : jeu. 29 mai 2008, 13:09
Distribution : ArchLinux
Niveau : Indépendance et débugage
Localisation : Oberentzen

YAD ou donner une interface graphique à vos scipts

Message par Ennoia »

Envie que vos scripts aient une interface graphique simple ?
Pas envie de devoir apprendre un language (C, python, perl...) et son interfaçage avec une bibliothèque graphique (GTK, QT,WX...) ?
C'est possible avec yad.

Pré-requis
  • savoir un peu programmer en bash (ksh, zsh ou autre)
  • lire la page de man de yad
  • du temps pour debugger vos scripts :lol:
Présentation
Yad est un fork de Zenity avec beaucoup d’amélioration comme les boutons personnalisables, des menus pop-up sur l’icône de la zone de notification et d'autres encore.

Voici un petit exemple perso pour un TeaTime :

Code : Tout sélectionner

#! /bin/bash

testbin()
{
if [ ! -x /usr/bin/$1 ]
then 
	echo "Veuillez installer $1."
	exit 0
fi
}
testbin yad
testbin aplay

# Variables #

TITBOX=Minuterie
DECO=/home/user/bin/deco/teatime.png
SOUND=/home/user/bin/deco/curve.wav

# Boite d'accueil #

db_accueil()
{
yad --title=$TITBOX --text=" Choisissez le temps\nd'infusion." \
	--window-icon="$DECO" --image="$DECO" --image-on-top \
	--height=185 --list --radiolist --no-headers \
	--column 1 --column 2 --print-column=2 \
		 false "3 minutes" true  "4 minutes" \
		 false "5 minutes" false "Autre"
}

# Boite choix temps autre #

db_autre()
{
yad --title=$TITBOX --text="Choisissez le temps d'infusion (min)." \
	--geometry=400x35 \
	--window-icon="$DECO" --image="$DECO" --image-on-top \
	--scale --min-value=120 --max-value=600 --value=300 \
	--mark=2:120 --mark="":150 --mark=3:180 --mark="":210 \
	--mark=4:240 --mark="":270 --mark=5:300 --mark="":330 \
	--mark=6:360 --mark="":390 --mark=7:420 --mark="":450 \
	--mark=8:480 --mark="":510 --mark=9:540 --mark="":570 \
	--mark=10:600  --hide-value
}

# Boite de notification #

db_notification()
{
aplay $SOUND &
yad  --title=$TITBOX --timeout=4 --info --text="C'est prêt \!" \
	 --window-icon="$DECO" --image="$DECO" --image-on-top
}

# Programme #

programme()
{
CHOIX=`db_accueil`
case $? in
252|1) # An error occured or the box was closed | Cancel/No pressed
	exit 0
;;
0) # All OK
	case $CHOIX in
	"3 minutes|")
		sleep 3m
		db_notification
	;;
	"4 minutes|")
		sleep 4m
		db_notification
	;;
	"5 minutes|")
		sleep 5m
		db_notification
	;;
	"Autre|")
		CHOIX=`db_autre`
		case $? in
		252) # An error occured or the box was closed
			exit 0
		;;
		1) # Cancel/No pressed
 			programme
		;;
		0) # All OK
			sleep "$CHOIX"s
			db_notification
		;;
		esac
	;;
	esac
;;
esac
}

# Lancement effectif #

programme
Et le résultat :
Fenêtre principale
Fenêtre principale
teatime_main.png (39.95 Kio) Consulté 8772 fois
Choix des temps
Choix des temps
teatime_autre.png (59.97 Kio) Consulté 8786 fois
Barre des tâches
Barre des tâches
teatime_taskbar.png (4.83 Kio) Consulté 8775 fois
Xdialog étant en GTK1, j'ai fini par passer à Zenity la mort dans l’âme. En effet, les possibilités étaient nettement moindre : je n'ai, par exemple, jamais réussi à mettre une icône perso. La découverte de yad vient de me réconcilier avec ce type de programme.
  • Possibilité de mettre une icône perso (enfin!)
  • possibilité de définir l’icône qui apparaîtra sur le bouton de la barre des tâches
  • création d’icône cliquable dans la zone de notification ...
Bref, que du bon !

Programmes similaires :
  • Xdialog vieillissant en GTK1 (quoique j'ai vu une dépendance à GTK2)
  • Zenity sous Gnome donc en GTK3
  • kdialog sous KDE
  • gtkdialog : a voir les exemples c'est carrément du GTK (ou du glade ?) interfacé avec bash !
Répondre