在KDE中使用sudo运行时,python脚本中的pynotify出错了

时间:2011-12-05 12:28:36

标签: python pynotify

我只是想在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和awesome中,通知显示为预期。我有一个python程序必须以root权限运行所以我不能让sudo落后。 1000是我的用户在X中登录的uid。

我的linux发行版是Arch。谢谢

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

Defaults env_keep += "HOME"
对于visudo。