Ubuntu Lucid上的命令行桌面通知


7

我正在编写一个shell脚本,我希望在该脚本中显示一个桌面通知,该通知保留在显示屏的一个角落,直到用户点击它为止,如果发送了多个通知,则所有这些通知都会显示并显示在同时在屏幕上的一个。我试过了 notify-send,它在Ubuntu Hardy上运行得很好,但它不能在Ubuntu Lucid上做我需要的。我应该用什么呢?

我也试过了 pynotifypython-notify )和 libnotify,但它们似乎都使用相同的后端,默认情况下无法执行我想要的操作。

我试过了

$ notify-send foo

,但它显示一个通知,在几秒钟之后超时(不好),和

$ notify-send -t 0 foo

在屏幕中间的窗口中显示通知(不好)。如果我做

$ notify-send foo
$ notify-send bar

只有一个通知同时显示(不好)。

经过一番挖掘,我发现:

Answers:


5

看起来 notify-osd 是新的Ubuntu通知守护程序,它不能做我想要的,和 notification-daemon 是我需要的那个,这是以前的Ubuntu版本中的默认版本,如Hardy。以下是如何安装它并使其成为Ubuntu Lucid的默认设置:

$ sudo apt-get install notification-daemon
$ sudo perl -pi -e 's@^Exec=.*@Exec=/usr/lib/notification-daemon/notification-daemon@' /usr/share/dbus-1/services/org.freedesktop.Notifications.service
$ sudo killall notify-osd

可选的:

$ sudo rm -f /usr/share/dbus-1/services/org.freedesktop.Notifications.service.*

现在这可以按预期工作:

$ notify-send -t 0 foo

要还原更改运行:

$ sudo apt-get install --reinstall notify-osd

1
此修复程序如何影响其他应用程序?
Matti Pastell

所有应用都会向其发送通知 通知守护
pts

似乎不支持多个通知。如何还原更改?
Ionică Bizău

对我来说,Ubuntu Lucid支持多个通知。要还原更改,请执行操作 sudo apt-get install --reinstall ... 在包含所有已更改文件的所有包上。 (使用 dpkg -S ... 找出哪些包包含哪些文件。)
pts

1
@pts谢谢! $ sudo apt-get install --reinstall notify-osd 为我工作。
Ionică Bizău
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.