Вы должны запустить агент следующим образом.
eval $(gpg-agent --daemon --write-env-file "${HOME}/.gnupg/.gpg-agent-info)"
Затем в ваш файл .bashrc
добавьте строки:
if [ -f "${HOME}/.gnupg/.gpg-agent-info" ]; then
. "${HOME}/.gnupg/.gpg-agent-info"
export GPG_AGENT_INFO
fi
Я не знаю, что делает QtGui.QDesktopServices.openUrl
, но я сильно подозреваю, что он открывает URL-адрес в соответствующем приложении общение с некоторым демоном KDE через сеанс X11, а не запуск браузера непосредственно в качестве своего дочернего элемента. Вы можете проверить это, посмотрев на идентификатор родительского процесса получившегося браузера. В связи с этим не имеет значения, на какой UID переключился ваш скрипт - имеет значение только uid демона.
Запуск сеансов X11 от имени root - обычно плохая идея. Могу я предложить запустить сеанс X11 от имени обычного пользователя и иметь только ваш сценарий Python, запускаемый от имени пользователя root (только если он проверен и только если вам это действительно нужно)?