我正在编写一个 shell 脚本,我希望通过该脚本显示一个桌面通知,该通知会停留在显示屏的一角,直到用户单击它为止,如果发送了多个通知,则所有通知都会同时显示并可见。我试过,notify-send
它在 Ubuntu Hardy 上运行良好,但它无法在 Ubuntu Lucid 上满足我的需要。我应该用什么来代替?
我也尝试过pynotify
(python-notify
)和libnotify
,但它们似乎都使用相同的后端,默认情况下无法完成我想要的操作。
我试过了
$ notify-send foo
但它显示的通知会在几秒钟后超时(不好),并且
$ notify-send -t 0 foo
在屏幕中间的窗口中显示通知(不好)。如果我这样做
$ notify-send foo
$ notify-send bar
同一时间只显示一条通知(不好)。
经过进一步挖掘我发现:
- http://www.markshuttleworth.com/archives/253解释说,Ubuntu 在 2008 年改变了通知机制。
/usr/lib/notify-osd/notify-osd
是显示通知的后端二进制文件
答案1
看来这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