答案1
功能比较
zenity --notification
相当于notify-send
最简单的情况。
例如,这两个命令是等效的:
$ zenity --notification --text=Title
$ notify-send Title
这些也是如此:
$ notify-send Title 'Long text message'
$ zenity --notification --text='Title\nLong text message'
正如您所看到的, for 的语法notify-send
更短、更简单,因为它是一个专门的工具,而 while--notification
只是zenity
.
差异是:
notify-send
有一个expire-time
选项,但是根据当前的手册页,Ubuntu 的 Osd 和 Gnome shell 都会忽略该选项。zenity
有一个--listen
选项可以更改通知的外观,而无需关闭并重新打开它:显示的消息、可见性和图标都可以通过向 zenity 的标准输入发送适当的字符串来更改。- 设置图标只需要for
--icon
zenity的标准输入和命令。notify-send
--listen
icon: error
- 类别和紧急程度是通过 中的专用选项设置的
zenity
,但它们需要一个--hint
选项。
请注意,您需要zenity
在使用时显式终止进程--listen
,因为即使在关闭后它也会继续监听标准输入(我认为这是一个错误)。对于通知动态变化的复杂程序来说,这不是问题,但对于简单的情况来说,这会使事情变得不必要的复杂。
另请注意,--hint
选项zenity
简要提及zenity --help-notification
,但在手册页中未提及。
类别和紧急程度都记录在桌面通知规范。
备择方案
dialog
和旧的whiptail
都是可能的替代方案,但我认为使用它们进行通知没有任何优势,除非您无法安装notify-send
或者zenity
您已经将它们用于其他目的,因为两者都具有比通知更多的功能。