0

我只想在 KDE 环境中显示通知。所以我尝试了 pynotifytest.py

from pynotify import *
init("test")
Notification("test", "test").show()

然后我运行sudo python pynotifytest.py,我得到的错误是:

No protocol specified
/usr/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display warnings.warn(str(e), _gtk.Warning)
 ----> 3 Notification("test", "test").show()

Error: Command line `dbus-launch --autolaunch=cb94cb23372d0aff09ce7d8a000024b4 --binary-syntax --close-stderr' exited with non-zero exit status 1: No protocol specified\nAutolaunch error: X11 initialization failed.

然后我试图放弃特权 pynotifytest.py

import os
os.setuid(1000)
from pynotify import *
init("test")
Notification("test", "test").show()

我仍然只在 KDE 中遇到同样的错误。在 gnome-shell 中,通知按预期显示。我有一个 python 程序必须以 root 权限运行,所以我不能留下 sudo。1000 是我用户登录 X 的 uid。

我的 Linux 发行版是 Arch。谢谢

4

2 回答 2

0

“它对我有用”——请提供您系统的更多详细信息。它在此处禁用 SELinux 的 fedora 15 上运行。另请注意,您遇到的问题出在 GTK+ 部分 - 而不是 pynotify 本身。

另外-您的用户“1000”是在图形环境中登录的用户吗?当然,如果您尝试使用登录用户或 root 用户以外的用户来显示窗口,这将不起作用。

于 2011-12-05T12:56:06.483 回答
0

要允许 sudo 在 X 中启动图形应用程序,您需要添加:

Defaults env_keep += "HOME"

到 visudo。

于 2013-08-19T11:17:50.037 回答