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 09/02/2018, à 11: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, à 14: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, à 16: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, à 08: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 wink

Hors ligne

#4 Le 13/03/2018, à 16: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 hmm

Dernière modification par bruno (Le 14/03/2018, à 09:06)

Hors ligne

#5 Le 13/03/2018, à 19: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, à 19: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, à 21: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...  roll


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#7 Le 13/03/2018, à 22: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, à 22:39

Arbiel

Re : [Résolu] Effacer une notification notify-send sur occurrence événement

golgoth63 a écrit :

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;
golgoth63 a écrit :

@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

lynn a écrit :

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:~$
man notify-send a écrit :

NAME
       notify-send - a program to send desktop notifications

SYNOPSIS
       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, à 22: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 13/03/2018, à 23: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, à 14: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)"
lynn a écrit :

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.

golgoth63 a écrit :

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:~$ 
golgoth63 a écrit :

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, à 14: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, à 14: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