问题描述
也许我做错了什么,但不应该命令(单独运行)
notify-send -t 1 "test"
notify-send -t 1000 "test"
notify-send -t 10000 "test"
有不同的超时?第一个几乎是瞬时的,第二个是1秒,第三个是100秒。在所有情况下,它似乎需要大约六秒钟。
行为有办法吗?由于开发人员将此标记为”feature”而不是bug,我想要一些替代方案……
最佳解决方案
这是一个已知的错误:https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
(它被维护者认为是’design decision’。)
次佳解决方案
如上面其中一篇文章所述,有一项设计决定不允许此功能。对你来说幸运的是,其他人也不同意并建立了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
Optional
要为send-notify添加比您目前更多的功能:
从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
有关上述解决方案的更多信息,请阅读以下文章:
Configurable Notification Bubbles for Ubuntu
第三种解决方案
这是故意实施的违反既定公约的行为,而不会在主机终端环境中取消资格。即。 notify-send
应该不再存在,因为它会破坏well-established预期和记录的功能,所以相反,现在应该有一个新的命令notify-graffiti
– What ????等一下……所有使用”conventional”命令名称拼写的脚本都将被泄露!?!通过改变命令名称拼写方式的约定?!?! – 嗯这个哲学是异常的,矛盾的虚伪,由Unity桌面终端界面支持。
它不能以两种方式完成 – 保留一些惯例,即。命令的名称,而不是其他命令,如所记录的命令的功能。如果要破坏功能,那么命令名称也应如此,以便维护用户”experience”的完整性,常规性,一致性等,或者是用户”frustration”,”annoyance”,”irritation”,……
参考:
-
详情请见:What is the name of the program that displays the notifications?
-
检查“
man notify-send
” -
请参阅Ubuntu文档Notification | Ubuntu App Developer中的Non-expiring_notifications部分
书签:Notify-send ignores timeout?
第四种方案
有一个小的方便脚本notify-send.sh作为drop-in替代notify-send,使您可以关闭或替换以前发送的通知。
编辑:正如@Glutanimate指出的那样,此脚本默认支持expiration-time。
我无法让expiration-time最终工作,所以我采用了一种hacky方式来发送2秒超时的通知,如下所示:
notify-send.sh --print-id test | xargs -I {} bash -c "sleep 2 && notify-send.sh --close={}" &