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 25/06/2006, à 14:15

gapz

zenity / at

Alors voila, il y a quelque temps que je me servais de ce script :

#!/bin/bash

# Variables locales
pensebetedir=$HOME/.pensebete
dlg_cmd='Xdialog --stdout --title Pense-bête'

# Vérification de l'existence du répertoire des pense-bêtes
[ -d $pensebetedir ] || mkdir $pensebetedir

# Récupération des données auprès de l'utilisateur
message=$($dlg_cmd --inputbox "Entrez votre pense-bête" 0 0) &&
date=$($dlg_cmd --calendar "Entrez la date de rappel" 0 0 0 0 0) &&
heure=$($dlg_cmd --timebox "Entrez l'heure de rappel" 0 0) ||
exit 1

# Aménagement des données pour at
date=${date:3:3}${date:0:3}${date:6}
heure=${heure%:*}

# Création du script qui sera appelé par at
pensebetename=$pensebetedir/$(date +%s)
cat >$pensebetename <<fin
$dlg_cmd --cancel-label "Rappel 10 min" --display ":0" --yesno "$message" 0 0
if [ \$? == 1 ]
then at -f $pensebetename now + 10 min
else rm $pensebetename
fi
fin

# Enregistrement auprès de at
at -f $pensebetename $heure $date

Puis je me suis dis pourquoi ne pas passer tout Xdialog en zenity malgrès que zenity offre moin de chose.
Donc j'ai entrepris de tout passer en zenity et voila ce que sa donne :

#!/bin/bash

# Variables locales
pensebetedir=$HOME/.pensebete
dlg_cmd='zenity --title=Pense-bête'

# Vérification de l'existence du répertoire des pense-bêtes
[ -d $pensebetedir ] || mkdir $pensebetedir

# Récupération des données auprès de l'utilisateur
message=$($dlg_cmd --entry --text="Entrez votre pense-bête:") &&
date=$($dlg_cmd --calendar --date-format=%d/%m/20%y --text="Entrez la date de rappel:") &&
heure=$($dlg_cmd --entry --text="Entrez l'heure de rappel (format: HH:MM):") ||
exit 1

# Aménagement des données pour at
date=${date:3:3}${date:0:3}${date:6}

# Création du script qui sera appelé par at
pensebetename=$pensebetedir/$(date +%s)
cat >$pensebetename <<fin
#!/bin/bash
$dlg_cmd --question --text="$message"
if [ \$? == 1 ]
then at -f $pensebetename now + 10 min
else rm $pensebetename
fi
fin

# Enregistrement auprès de at
at -f $pensebetename $heure $date

Jusqu'a preuve du contraire il n'y a que les instructions qui change un peu.
Pour pouvoir bien comprendre mon problème déja je vais vous expliquer le principe de ce script :
On rentre des informations : Message + Date + Heure, puis on créé un fichier portant le nom de l'heure unix au moment de l'exécution (date +%s), puis on dit à at d'aller exécuter ce script à telle date et telle heure. Ce fichier contiendra comme vous l'aurez compris :

#!/bin/bash
zenity --title=Pense-bête --question --text="$message"
if [ \$? == 1 ]
then at -f $pensebetename now + 10 min
else rm $pensebetename
fi

La seul chose qui difère de l'autre script est juste la première commande, et indépandament ce morceau script ne pose aucun problème, mais lorsque vient l'heure d'éxécution, sachant que at l'a bien pris en compte il ne s'éxécute pas et me renvoie un "mail" avec comme contenu :

Cette option n'est pas disponible. Veuillez consulter --help pour toutes les utilisations possibles.

Ce contenu est mot pour mot ce que nous renvoie zenity quand on a fait une erreur de syntaxe, mais apparament dans aucun cas j'en ai comis une, déja j'aimerai en premier que vous me dite si ce script fonctionne bien chez vous ou s'il vous fait la même erreur que moi, ou alors si vous avez une idée pourquoi il ne marche....


Real programmers code in binary :: http://gapz.tuxfamily.org

Hors ligne

#2 Le 30/06/2006, à 14:08

gapz

Re : zenity / at

Petit up on sait jamais......


Real programmers code in binary :: http://gapz.tuxfamily.org

Hors ligne

#3 Le 04/07/2006, à 02:39

gnujsa

Re : zenity / at

J'utilise fr_FR.UTF-8 comme locale (Debian testing + zenity 2.14.2).
$ echo $LANG
fr_FR.UTF-8

J'execute ta commande dans gnome terminal en tant que simple utilisateur:
$ zenity --title=Pense-bête --question --text="$message"
ça marche.

Cette fois-ci, la même commande mais en la préfixant avec LANG=C
$ LANG=C zenity --title=Pense-bête --question --text="$message"
This option is not available. Please see --help for all possible usages.

En mettant 'Pense-bête' entre guillement simple ou double n'y change rien. En suprimant l'accent circonflexe, cette fois ça marche.
$ LANG=C zenity --title="Pense-bete" --question --text="$message"

essaye en préfixant la commande de ta locale ou peut-être en définissant la variable LANG au début de ton script.