当前位置: 首页>>技术教程>>正文


Notify-send忽略超时?

, ,

问题描述

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

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”,……

参考:

书签: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={}" &

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1641.html,未经允许,请勿转载。