KDE中使用sudo运行的Python脚本pynotify出错
我只是想在KDE环境中显示通知。所以我试了试
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.
接着我尝试降低权限来运行
import os
os.setuid(1000)
from pynotify import *
init("test")
Notification("test", "test").show()
但在KDE中我还是遇到了同样的错误。在gnome-shell和awesome中,通知正常显示。我有一个必须以root权限运行的python程序,所以我不能不使用sudo。我的用户在X中的UID是1000。
我的Linux发行版是Arch。谢谢。
2 个回答
0
为了让sudo能够在图形界面中启动应用程序,你需要在visudo中添加以下内容:
Defaults env_keep += "HOME"
。
0
“对我来说可以用”——请提供更多关于你系统的信息。我在关闭SELinux的Fedora 15上测试过,效果很好。另外,请注意你遇到的问题是出在GTK+部分,而不是pynotify本身。
还有,你的用户“1000”是登录到图形界面的那个用户吗?当然,如果你试图用一个不是当前登录用户或者root用户的账户来显示窗口,那是行不通的。