通知发送忽略超时?


47

也许我做错了,但命令不应该(单独运行)

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

有不同的超时时间?第一个几乎是瞬时的,第二个花费1秒,第三个花费100秒。在所有情况下,似乎都需要大约六秒钟。

行为有办法吗?当开发人员将此标记为“功能”而不是错误时,我想要一些替代方法...


1
是的,我确认了
Ringtail 2012年

对我来说,使用XFCE4可以正常工作。
Grumbel 2012年

@BlueXrider您看到与我相同的问题吗?如果是这样,您使用的是哪个版本?
钩上2012年

我确认测试代码可以正常工作。我得到指示的超时时间。
Ringtail 2012年

6
或者,您可以使用notify-send "Text Here" ; sleep 3 ; killall notify-osdsleep 33秒后到期(实际上是杀死)的示例)!
2015年

Answers:


44

这是一个已知的错误:https : //bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(维护者认为这是“设计决定”。)


3
这不是真正的错误。这是设计决定。
Eren Tantekin 2012年

68
错误的设计决策可能是一个错误。
鲍里斯·布赫

23
当软件声称做某事而又做另一件事时,那就是一个错误。如果开发人员不希望我们将其视为错误,则不要声称它的行为不像它那样。
hytromo's

10
那不是功能。那是个错误!当您提供一个杠杆来打开挡风玻璃刮水器并且不起作用时,则表明它已损坏。
马特·H

3
@ChristopherDone尊重,这是一个错误。notify-send(notify-osd的一部分)的帮助说:notify-send --help | grep timeout -t,--expire-time = TIME指定超时(以毫秒为单位),通知将到期。这是该工具用户的主要界面。该主界面由用户决定,因此这是一个错误。根据您的观点,它要么是帮助文本中的错误,要么是实现中的错误,但这绝对是一个错误。
Michael Sparks

21

如以上文章之一所述,有一项设计决策禁止使用此功能。对您来说幸运的是,其他人也不同意并设置了PPA,因此您也可以为您的系统撤消此决定。

要解决您的问题,只需:

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

可选的

要添加比当前更多的功能来发送通知:

从Ubuntu 16.04开始:

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

对于9.10-14.10版本:

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

有关上述解决方案的更多信息,请阅读本文:

Ubuntu的可配置通知气泡


不幸的是,存储库不再提供该软件包,说E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(相关:askubuntu.com/questions/50/…
phil294

@Blauhirn:我不是上述软件包的开发人员。请与开发人员联系
Fabby 17'Feb 13'9

@Blauhirn:自16.04起更新的答案
Fabby

这工作了!为了使其他任何人都清楚,您还必须安装更新版本的notify-osd。即: sudo add-apt-repository ppa:leolik/leoliksudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig; sudo apt-get update; sudo apt install notify-osd # Updates to actually useful version; sudo apt install notifyosdconfig 非常感谢!
Michael Sparks

1
@MichaelSparks更改upgradedist-upgrade。那应该好好处理,因为notify-osd已经安装并且应该确定升级。
Fabby

4

这是有意实施的既定惯例,在主机终端环境中没有取消资格的情况。即。notify-send不应再存在,因为它会损害已建立的预期和已记录的功能,因此,notify-graffiti现在应该存在一个新命令-什么?请稍等...使用“常规”命令名称拼写的所有那些脚本将被破坏!通过更改命令名称的拼写约定?!?!-hmmm这种哲学在Unity桌面终端界面的支持下格外地,自相矛盾。

不能同时做到这两种方式-保留一些约定,即。命令的名称,而不是其他名称,如文档所述。如果要破坏功能,那么命令名称也应该如此,以保持用户“经验”的完整性,常规性,一致性等,或者是用户“沮丧”,“烦恼”,“烦躁”。 ..

参考:

书签:
通知发送忽略超时?


“ Non-expiring_notifications”和“ Notification | Ubuntu App Developer”链接已断开(或者它们所引用的网页是)。
基思·汤普森

2

有一个方便的小脚本notify-send.sh可以替代notify-send,使您可以关闭替换以前发送的通知。

编辑:正如@Glutanimate所指出的,此脚本默认情况下支持到期时间。

最终我无法获得到期时间,因此我采用了一种很怪诞的方式来发送具有2秒超时的通知,如下所示:

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


这个脚本很棒!感谢您在这里分享。看起来现在已经完全与notify-send的原始CLI参数兼容。即:您可以通过发出2秒钟超时的通知notify-send.sh -t 2 "Hello World!"。我已将脚本符号链接到本地​​$ PATH目录,并将其重命名为notify-send。不再处理该低于标准的notify-osd实现!
谷氨酰胺

哦,很酷@Glutanimate!感谢您通知我们。
NiMa Thr

0

对于使用Cinnamon桌面环境的用户,可以启用以下设置:

通知>超时后删除通知


0

以毫秒为单位。我在XUbuntu 16.04(Ubuntu XFCE)上进行了测试

notify-send -t 3000 "test"

恰好3秒

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.