使用policykit+dbus代替gksu来运行图形应用程序

发布于 2024-11-25 04:00:04 字数 247 浏览 0 评论 0原文

我正在寻找执行 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花伊自在美 2024-12-02 04:00:04

您需要在 /usr/share/polkit-1/actions 中创建一个以 XML 编写的操作定义文件

将其复制到 /usr/share/polkit-1/actions/com.example.gedit

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="com.example.gedit">
    <message gettext-domain="gedit">Authentication is required to run gedit as root</message>
    <icon_name>accessories-text-editor</icon_name>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>

org.freedesktop.policykit.exec.allow_gui = true 将允许 gedit连接到您的 Xorg 服务器。它会自动将 XAUTHORITYDISPLAY 传递给它。

You need to create an action definition file in /usr/share/polkit-1/actions written in XML.

Copy this to /usr/share/polkit-1/actions/com.example.gedit:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="com.example.gedit">
    <message gettext-domain="gedit">Authentication is required to run gedit as root</message>
    <icon_name>accessories-text-editor</icon_name>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>

The value org.freedesktop.policykit.exec.allow_gui = true will allow gedit to connect to your Xorg server. It'll automatically pass XAUTHORITY and DISPLAY to it.

扛刀软妹 2024-12-02 04:00:04

大多数图形程序都需要 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文