使用policykit+dbus代替gksu来运行图形应用程序
我正在寻找执行 gksu 或 beesu 工作的命令,但依赖于策略包。
策略包和 dbus 文档在某种程度上非常复杂且不清楚。
我找到了“pkexec”,但在尝试运行图形应用程序
pkexec gedit
结果时它显示错误:
(gedit:7243): Gtk-WARNING **: cannot open display:
I'm searching for a command that does gksu or beesu job, but depends on policykit.
The policykit and dbus documentation is somehow very complicated and not clear.
I found "pkexec" but it shows errors when trying to run a graphical application
pkexec gedit
results:
(gedit:7243): Gtk-WARNING **: cannot open display:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要在
/usr/share/polkit-1/actions
中创建一个以XML
编写的操作定义文件
。将其复制到
/usr/share/polkit-1/actions/com.example.gedit
:值
org.freedesktop.policykit.exec.allow_gui = true
将允许 gedit连接到您的 Xorg 服务器。它会自动将XAUTHORITY
和DISPLAY
传递给它。You need to create an
action definition file
in/usr/share/polkit-1/actions
written inXML
.Copy this to
/usr/share/polkit-1/actions/com.example.gedit
:The value
org.freedesktop.policykit.exec.allow_gui = true
will allow gedit to connect to your Xorg server. It'll automatically passXAUTHORITY
andDISPLAY
to it.大多数图形程序都需要 dbus,所以即使你设法运行它,它也可能会失败。
对于 gnome 程序至少需要设置以下变量
“SESSION_MANAGER”、“DBUS_SESSION_BUS_ADDRESS”、“DISPLAY”、“GNOME_DESKTOP_SESSION_ID”、“XAUTHORITY”
。对于 kde 程序,您需要'SESSION_MANAGER'、'DBUS_SESSION_BUS_ADDRESS'、'DISPLAY'、'KDE_FULL_SESSION'、'XAUTHORITY'
我认为 pkexec 至少需要 XAUTHORITY 和 DISPLAY 才能连接到 xorg 服务器。
Most of graphical programs need dbus so even if you manage to run it, it might fail.
For gnome programs at least following variables need to be set
'SESSION_MANAGER', 'DBUS_SESSION_BUS_ADDRESS', 'DISPLAY', 'GNOME_DESKTOP_SESSION_ID', 'XAUTHORITY'
. For kde programs you need'SESSION_MANAGER', 'DBUS_SESSION_BUS_ADDRESS', 'DISPLAY', 'KDE_FULL_SESSION', 'XAUTHORITY'
I thing pkexec needs at least XAUTHORITY and DISPLAY to be able to connect to xorg server.