如何使用’notify-send’立即替换现有通知?
当我使用notify-send
在桌面上显示通知,然后再次使用它来显示不同的通知时,我注意到第二个仅在第一个消失后显示。
有没有办法让notify-send
立即用另一个通知替换现有通知?
你可以,但你必须使用修补的libnotify来做到这一点
notify-send
无法在超时(或消失)之前替换现有通知。 这是一个已知的错误 。 但是,bug报告的评论者发布了一个修补程序来修复它。
从PPA安装修补的libnotify-bin
我已经创建了libnotify-bin包的修补版本,允许在我的PPA中进行替换。 目前仅适用于Ubuntu 12.04,但如果您需要任何其他当前支持的版本,请发表评论,我会尽力使其可用。
要安装,请打开终端并:
sudo apt-add-repository ppa:izx / askubuntu sudo apt-get update sudo apt-get install libnotify-bin
如何使用替换function
修补的notify-send
包括两个新的开关, -p
(或–print-id )和-r
(或–replace-id )。 --help
将它们描述为:
-p, - print-id打印通知ID。 -r, - replace-id = REPLACE_ID要替换的通知的ID。
- 使用
-p
,每个notify-send
将返回一个ID N (数字/整数)。 - 使用
-r N
发出另一个notify-send
将立即替换先前的通知。 -
例如,对于bash,您可以使用
notify-send -p ...
保存ID:NID=$(notify-send -p "MESSAGE-1")
然后将其替换为:
notify-send -r $NID "MESSAGE-2"
-
您可以在脚本中递归使用-p和-r ,只要-r变量在开头初始化为0即可。
-
这是一个简单的脚本,显示以半秒为间隔从0到100计数的通知:
#!/斌/庆典
NID = 0
我在{0..100..10} 做 NID = $(notify-send -p -r $ NID $ i) 睡0.5 DONE
X-REF:
如何在notify-osd中强制新的通知显示而不等待先前的退出?
没有补丁,你可以简单地做
#!/bin/bash for i in {0..100..10} do killall notify-osd notify-send "testing" $i sleep 1 done
书签:
如何使用’notify-send’立即替换现有通知?
发送错误notify-osd(2592):不允许操作。 那是什么意思?
这可能意味着特权不足,需要:
sudo killall notify-osd
您可以使用“同步”提示创建“确认”通知,该通知将替换先前的确认通知。 例如:
notify-send "Message" -h string:x-canonical-private-synchronous:anything
本文档中指定了“x-canonical-private-synchronous”提示。 要指定提示,请使用-h type:name:value
。 这里的类型是string
,名称是x-canonical-private-synchronous
,似乎值可以是你想要的任何值。
因此,如果您的第一个通知是使用该提示创建的,第二个通知也是如此,第二个通知将立即替换第一个通知。 (请参阅文档中的动画和持续时间 ,在“确认气泡”栏中。)