#1 Le 09/02/2018, à 12:28
- Arbiel
[Résolu] Effacer une notification notify-send sur occurrence événement
Bonjour à tous
[Edit]
La solution
pkill notify-osd
Merci à vous, golgoth63 et lynn
[/Edit]
A la fin d'un script, j'affiche une notification par notify-send, avec une temporisation, qui demande une action à l'utilisateur. Cette action aboutit au lancement d'un nouveau script, ce qui me permet de constater qu'il a bien suivi la consigne qui lui a été donnée.
Au démarrage du second script, j'aimerais faire disparaître la notification par une commande, ce qui me permettrait de me passer de la temporisation.
Merci d'avance à quiconque pourra me mettre sur la voix.
Arbiel
Dernière modification par Arbiel (Le 14/03/2018, à 15:43)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#2 Le 12/03/2018, à 17:56
- Arbiel
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Bonjour
Je me permets de réactiver cette demande.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#3 Le 13/03/2018, à 09:56
- kholo
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
salut,
tu peux intercepter le PID de notify :
notify-truc...
echo $! > pid.txt
comme ça tu peux le tuer en ton temps...
ça marche aussi avec zenity progress
Hors ligne
#4 Le 13/03/2018, à 17:29
- bruno
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Hello,
Récupérer l'ID de la notification avec -p :
notify_id=$(notify-send -p "Premier message")
Remplacer la notification par le second message avec -r :
notify-send -r $notify_id "Second message"
EDIT : arguments qui ne fonctionnent qu'avec une version modifiée de libnotify
Dernière modification par bruno (Le 14/03/2018, à 10:06)
Hors ligne
#5 Le 13/03/2018, à 20:04
- Arbiel
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Bonsoir
Merci pour vos propositions. Malheureusement, je ne m'en sors pas.
J'ai essayé plusieurs commandes : en exécution synchrone, en asynchrone, dans un pipe-line, … . En tout état de cause, le message est bien affiché, mais je n'ai pas réussi à l'effacer.
Par exemple
remi@remi-Vostro-3550:~$ pid="$(notify-send -t 1000 "banière" "message à afficher" | echo $!)"; top -p ${pid}
top: -p exige un paramètre
remi@remi-Vostro-3550:~$
Par ailleurs
remi@remi-Vostro-3550:~$ notify_id=$(notify-send -p "Premier message")
Unknown option -p
remi@remi-Vostro-3550:~$
J'ai relu la partie "Job control" du manuel bash, mais sans être capable d'en tirer quoi que ce soit. Mes connaissances sont trop limitées en la matière.
Avez-vous d'autres suggestions à me faire ?
Arbiel
Dernière modification par Arbiel (Le 13/03/2018, à 20:18)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#6 Le 13/03/2018, à 22:24
- lynn
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
L'option -t de notify-send n'est plus valide depuis un moment... J'avais lu ça il y a quelque temps je ne sais plus où, mais il semblerai que ce ne soit pas un bug mais une volonté des développeurs de ne plus laisser la possibilité de régler le timeout..!? Trop contraignant à maintenir, très certainement...
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#7 Le 13/03/2018, à 23:12
- lynn
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Tant mieux si ça fonctionne sous Kubuntu mais sur Ubuntu, cette option ne fonctionne plus depuis un bout de temps et comme l'ami Arbiel n'a pas précisé quelle variante il utilise, j'ai considéré qu'il utilisait Ubuntu.
Pour la source, je n'ai plus le lien mais c'était un article en langue anglaise.
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#8 Le 13/03/2018, à 23:39
- Arbiel
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Mais je ne m'explique pas pourquoi ta notification reste affichée, surtout avec une tempo.
J'avais bien vu ta question, mais je suis resté focalisé sur mes tests, et j'ai oublié de te répondre, ce dont je te prie de bien vouloir m'excuser.
Ma présentation initiale n'était pas assez précise.
Dans le premier script, le message indique à l'utilisateur de lancer un script en cliquant sur une des icônes présentes sur son bureau. Cette action déclenche l'exécution d'un second script. J'utilise l'option -t avec une valeur de 500 ms. La durée d'affichage est en fait beaucoup plus longue, mais je ne l'ai pas chronométrée.
Lorsque le second script est lancé, le message peut être encore présent à l'écran, mais peut aussi avoir été effacé si l'utilisateur a pris sa décision plus lentement.
J'utilise cette méthode (affichage d'un message qui demande de cliquer sur une icône pour continuer son activité) avec des messages plus ou moins longs, ce qui nécessiterait que je calcule la temporisation la plus appropriée. Mais ce calcul est impossible dans la mesure où les utilisateurs sont des adultes handicapés mentaux qui tous ont des difficultés. Le temps qu'il leur faut est donc éminemment variable et c'est la raison pour laquelle je préférerais ne pas mettre de temporisation et effacer le message au moment opportun.
J'ai maintenant ajouté la lecture du message par pico2wave et play. J'ai un besion similaire avec cette lecture que je voudrais annuler simultanément à l'effacement du message. Mais j'ai là un problème supplémentaire. Lorsque je lance play en mode asynchrone, aucun son n'est audible. En synchrone, le script atteint la fin de la lecture pour continuer, c'est-à-dire exécuter la commande "exit 0".
Mon code est le suivant
case "${action}" in
parler) pico2wave -l fr-FR -w /tmp/message.wav "${msg}"; (play /tmp/message.wav &>/dev/null &);;
notifier) notify-send -u critical -t ${gbl_dur_notif} -i "${icone}" "${resume}" "${msg}" ;;
questionner) zenity --question --timeout=15 --title="${resume}" --text="${msg}" --ok-label="Oui" --cancel-label="Non" ; cr="${?}";;
esac;
@arbiel, tu n'as pas mis "-t 0" ? Cela revient à mettre une tempo infinie et bascule en affichage avec bouton.
Effectivement, je m'en suis aperçu lors de mes tests
comme l'ami Arbiel n'a pas précisé quelle variante il utilise, j'ai considéré qu'il utilisait Ubuntu.
Cf ma signature
remi@remi-Vostro-3550:~$ uname -a
Linux remi-Vostro-3550 3.13.0-106-generic #153-Ubuntu SMP Tue Dec 6 15:44:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
remi@remi-Vostro-3550:~$
NAME
notify-send - a program to send desktop notificationsSYNOPSIS
notify-send [OPTIONS] <summary> [body]DESCRIPTION
With notify-send you can sends desktop notifications to the user via a
notification daemon from the command line. These notifications can be
used to inform the user about an event or display some form of informa‐
tion without getting in the user's way.OPTIONS
-u, --urgency=LEVEL Specifies the urgency level (low, normal, criti‐
cal).-t, --expire-time=TIME
Specifies the timeout in milliseconds at which to expire the
notification.
Arbiel
Dernière modification par Arbiel (Le 13/03/2018, à 23:48)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#9 Le 14/03/2018, à 00:15
- lynn
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Après avoir testé sous Ubuntu 14.04, le constat est le même. Notify-send ne prend pas (plus) en compte l'option -t. Le timeout est d'une dizaine de secondes quelle que soit la valeur indiquée après -t.
Comme quoi, ce problème n'est pas récent.
Le man indique toujours cette option et à juste titre puisque sous certaines variantes d'Ubuntu et/ou d'autres distributions, ça fonctionne.
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#10 Le 14/03/2018, à 15:30
- Arbiel
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Bonjour
Edit : je viens de trouver comment effacer le message
remi@remi-Vostro-3550:~$ notify-send "titre" "message"
remi@remi-Vostro-3550:~$ kill -n TERM "$(pidof notify-osd)"
Notify-send ne prend pas (plus) en compte l'option -t. Le timeout est d'une dizaine de secondes quelle que soit la valeur indiquée après -t.
Ceci me semble en effet tout à fait juste. Mais je reste désireux d'effacer le message à l'instant opportun.
Lorsque ta notification est affichée, as tu un processus "notify-osd" qui tourne ?
oui
Je l'avais remarqué dans mes tests hier. Mais je n'ai pas encore trouvé comment tuer le processus notify-osd.
remi@remi-Vostro-3550:~$ notify-send "titre" "texte à afficher"
remi@remi-Vostro-3550:~$ kill -n TERM notify-osd
bash: kill: notify-osd : les arguments doivent être des identifiants de tâche ou de processus
remi@remi-Vostro-3550:~$
Je ne vois pas pourquoi tu lances une notification à part et ensuite zenity.
Pas exactement. Dans le code que j'ai indiqué, l'exécution des commandes est conditionnée par la valeur de ${action}. Je n'affiche pas à la fois un message par zenity et une notification par notify-send.
Arbiel
Dernière modification par Arbiel (Le 14/03/2018, à 15:37)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#11 Le 14/03/2018, à 15:40
- Arbiel
Re : [Résolu] Effacer une notification notify-send sur occurrence événement
Oui, cela fonctionne également, et c'est plus simple que de passer pas pidof
Merci.
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne