Notify-send ignore le délai d'attente?

47

Peut-être que je fais quelque chose de mal, mais les commandes (exécutées séparément)

notify-send -t 1 "test"
notify-send -t 1000 "test"
notify-send -t 10000 "test"

Avez-vous des délais d'attente différents? Le premier étant presque instantané, le second prenant 1 seconde et le troisième 100 secondes. Dans tous les cas, cela semble prendre environ six secondes.

Y a-t-il un moyen de contourner le comportement? Comme les développeurs qualifient cela de "fonctionnalité" plutôt que de bug, je voudrais quelques alternatives ...

Accroché
la source
1
oui, j'ai confirmé
Ringtail
Pour moi, cela fonctionne comme prévu avec XFCE4.
Grumbel
@BlueXrider vous voyez le même problème que moi? Si oui, quelle version utilisez-vous?
Hooked
J'ai confirmé que le code de test fonctionne correctement. Je reçois les temps impartis comme indiqué.
Ringtail
6
Sinon, vous pouvez utiliser notify-send "Text Here" ; sleep 3 ; killall notify-osd(où sleep 3est l'exemple d'expiration (en train de tuer) après 3 secondes)!
Pandya le

Réponses:

44

C'est un bug connu: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(Ceci est considéré comme une 'décision de conception' par le responsable.)

Boris Bukh
la source
3
Ce n'est pas vraiment un bug. C'est une décision de conception.
Eren Tantekin
68
Une mauvaise décision de conception peut être un bug.
Boris Bukh le
24
Quand un logiciel prétend faire une chose alors qu'il en fait une autre, c'est un bug. Si les développeurs ne veulent pas que nous le considérions comme un bogue, alors ne prétendez pas qu'il agit comme si de rien n'était.
hytromo
10
Ce n'est pas une fonctionnalité. C'est un bug! Lorsque vous utilisez un levier pour activer les essuie-glaces et que cela ne fonctionne pas, il est cassé.
Matt H
3
@ChristopherDone Avec tout le respect, c'est un bug. L'aide de notify-send (partie de notify-osd) dit: notify-send --help | grep timeout -t, --expire-time = TIME Spécifie le délai d'expiration en millisecondes au terme duquel la notification doit expirer. C'est l'interface principale avec un utilisateur de l'outil. Cette interface principale appartient à l'utilisateur et est donc un bogue. Il s’agit d’un bogue lié au texte d’aide ou à la mise en œuvre, selon votre point de vue, mais c’est définitivement un bogue.
Michael Sparks
21

Comme mentionné dans l'un des messages ci-dessus, il existe une décision de conception pour interdire cette fonctionnalité. Heureusement pour vous, d'autres personnes sont également en désaccord et ont mis en place un PPA et vous pouvez également inverser cette décision pour votre système.

Pour résoudre votre problème, il suffit de:

sudo add-apt-repository ppa:leolik/leolik 
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install libnotify-bin
pkill notify-osd

Optionnel

Pour ajouter encore plus de fonctionnalités d'envoi-notifier que celles actuellement disponibles:

À partir d’Ubuntu 16.04:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install notifyosdconfig

Pour les versions 9.10-14.10:

sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig
sudo apt-get update
sudo apt-get install notifyosdconfig

Pour plus d'informations sur la solution ci-dessus, lisez cet article:

Bulles de notification configurables pour Ubuntu

Fabby
la source
Malheureusement, le dépôt ne fournit plus le paquet, disant E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(lié: askubuntu.com/questions/50/… )
phil294
@Blauhirn: Je ne suis pas le développeur dudit paquet. S'il vous plaît contacter le développeur
Fabby
@Blauhirn: réponse mise à jour à partir de 16.04
Fabby
Cela a fonctionné! Cependant, pour éclaircir quiconque, vous devez également installer la version mise à jour de notify-osd. à savoir: sudo add-apt-repository ppa:leolik/leolik; sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig; sudo apt-get update; sudo apt install notify-osd # Updates to actually useful version; sudo apt install notifyosdconfig Merci beaucoup!
Michael Sparks
1
@MichaelSparks a été remplacé upgradepar dist-upgrade. Cela devrait régler le problème, car notify-osd est déjà installé et doit être mis à niveau à coup sûr.
Fabby
4

Il s’agissait d’une violation intentionnelle des conventions établies sans exclusion dans l’environnement terminal hôte. c'est à dire. notify-sendne devrait plus exister car il compromet la fonctionnalité attendue et documentée bien établie, donc une nouvelle commande notify-graffitidevrait maintenant exister - Quoi ???? Attendez une seconde ... tous les scripts qui utilisent l'orthographe "conventionnelle" du nom de la commande seront compromis!?! en changeant la convention de l'épellation du nom de la commande?!?! - hmmm Cette philosophie est exceptionnellement, paradoxalement hypocrite, de la part de l’interface de terminal de bureau Unity.

Cela ne peut pas être fait dans les deux sens - en préservant certaines conventions. le nom d'une commande et pourtant pas d'autres, la fonctionnalité d'une commande telle que documentée. Si la fonctionnalité doit être compromise, le nom de la commande doit également l'être afin de préserver l'intégrité, la convention, la cohérence, etc. de l'utilisateur "expérience", ou est-ce "utilisateur" frustration "," ennui "," irritation ",. ..

ref:

Signet:
Notify-send ignore le délai d'attente?

George Rowell
la source
Les liens "Non-expiring_notifications" et "Notification | Ubuntu App Developer" sont rompus (ou plutôt la page Web à laquelle ils font référence est).
Keith Thompson
2

Un petit script très utile, notify-send.sh, remplace en remplacement de notify-send et vous permet de fermer ou de remplacer les notifications envoyées précédemment.

Edit: comme l'a souligné @Glutanimate, ce script prend en charge le délai d'expiration par défaut.

Je ne pouvais pas obtenir le délai d'expiration au travail, alors je me suis plutôt tourné vers un moyen hacky d'envoyer une notification avec un délai d'expiration de 2 secondes comme celui-ci:

notify-send.sh --print-id test | xargs -I {} bash -c "sleep 2 && notify-send.sh --close={}" &

NiMa Thr
la source
Ce script est génial! Merci de partager ici. On dirait qu'il est maintenant complètement compatible avec les arguments CLI d'origine de notify-send. C'est à dire: vous pouvez envoyer une notification avec un délai d'attente de 2 secondes via notify-send.sh -t 2 "Hello World!". J'ai lié le script par liaison symbolique à mon répertoire local $ PATH et je l'ai renommé en notifier-envoyer. Plus besoin de s'occuper de cette mise en œuvre sub-notify-osd!
Glutanimate
Oh cool @ Glutanimate! Merci de nous le faire savoir.
NiMa Thr
0

Pour ceux qui utilisent l'environnement de bureau Cinnamon, un paramètre peut être activé:

Notifications> Supprimer les notifications une fois leur délai d'attente écoulé

Shai Coleman
la source
0

C'est en millisecondes. J'ai testé sur XUbuntu 16.04 (Ubuntu XFCE)

notify-send -t 3000 "test"

exactement 3 secondes

Pawel Cioch
la source