Estou tentando usar o pkexec para executar o emulador x-terminal como não-raiz e estou com problemas.
Eu tenho um arquivo de políticas definido como:
<?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="org.freedesktop.policykit.pkexec.gedit">
<description>Run the terminal emulator.</description>
<message>Authentication is required to run the terminal emulator</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/x-terminal-emulator</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>
Isso funciona bem se eu apenas executar um emulador pkexec x-terminal. Eu recebo um aviso e as coisas funcionam. No entanto, se eu tentar executar como um usuário diferente, como pkexec --user admin x-terminal-emulator, recebo um erro de
No protocol specified.
Unable to init server: Could not connect: Connection refused.
#Failed to parse arguments: Cannot open display:
Da minha pesquisa, isso significa que o valor $ DISPLAY não está especificado, mas não sei como modificar meu comando adequadamente para que eu possa executá-lo.
Tags pkexec