pts*_*pts 7 desktop notifications ubuntu-10.04
我正在编写一个 shell 脚本,我想从中显示一个桌面通知,该通知停留在显示器的一个角落,直到用户单击它,如果发送了多个通知,则所有通知都将显示并在同时在屏幕上的一个。我试过notify-send
,它在 Ubuntu Hardy 上运行得很好,但它不能在 Ubuntu Lucid 上做我需要的。我应该用什么代替?
我也试过pynotify
( python-notify
) 和libnotify
,但它们似乎都使用相同的后端,默认情况下不能做我想要的。
我试过了
$ notify-send foo
Run Code Online (Sandbox Code Playgroud)
,但它会显示一个通知,该通知在几秒钟后超时(不好),并且
$ notify-send -t 0 foo
Run Code Online (Sandbox Code Playgroud)
在屏幕中间的窗口中显示通知(不好)。如果我做
$ notify-send foo
$ notify-send bar
Run Code Online (Sandbox Code Playgroud)
只有一个通知同时显示(不好)。
经过更多的挖掘,我发现:
/usr/lib/notify-osd/notify-osd
是显示通知的后端二进制文件似乎这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
Run Code Online (Sandbox Code Playgroud)
可选的:
$ sudo rm -f /usr/share/dbus-1/services/org.freedesktop.Notifications.service.*
Run Code Online (Sandbox Code Playgroud)
现在这按预期工作:
$ notify-send -t 0 foo
Run Code Online (Sandbox Code Playgroud)
要恢复更改,请运行:
$ sudo apt-get install --reinstall notify-osd
Run Code Online (Sandbox Code Playgroud)