Использование policykit + dbus вместо gksu для запуска графического приложения - PullRequest
1 голос
/ 20 июля 2011

Я ищу команду, которая выполняет работу gksu или beesu, но зависит от policykit.

Документация policykit и dbus как-то очень сложна и неясна.

Я нашел "pkexec "но он показывает ошибки при попытке запустить графическое приложение

pkexec gedit

результаты:

(gedit:7243): Gtk-WARNING **: cannot open display: 

Ответы [ 2 ]

2 голосов
/ 21 января 2015

Вам необходимо создать action definition file в /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.Он автоматически передаст XAUTHORITY и DISPLAY к нему.

0 голосов
/ 07 декабря 2011

Большинству графических программ требуется 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' Мне кажется, что для подключения к серверу xorg pkexec требуется как минимум XAUTHORITY и DISPLAY.

...