- if [ -f "${HOME}/.gnupg/GPG_AGENT_INFO" ] && pid="$(cut -d: -f2 $HOME/.gnupg/GPG_AGENT_INFO)" && [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
- export GPG_AGENT_INFO="$(cat ${HOME}/.gnupg/GPG_AGENT_INFO)"
- else
- if [ -n "$DISPLAY" -a "$X11" = "yes" ] || [ -z "$DISPLAY" -a "$X11" = "no" ]; then
- eval "$(gpg-agent --daemon)"
- echo $GPG_AGENT_INFO > ~/.gnupg/GPG_AGENT_INFO
- export GPG_AGENT_INFO
+ if [ -f "${HOME}/.gnupg/GPG_AGENT_INFO" ] && \
+ pid="$(cut -d: -f2 $HOME/.gnupg/GPG_AGENT_INFO)" && \
+ agent="$(readlink -n "/proc/$pid/exe")" && agent=${agent%% *} && \
+ [ "$agent" = "/usr/bin/gpg-agent" -o "$agent" = "/usr/bin/seahorse-agent" ]; then
+ export GPG_AGENT_INFO="$(cat ${HOME}/.gnupg/GPG_AGENT_INFO)"
+ else
+ if [ "$seahorse" = "no" ]; then
+ eval "$(gpg-agent --daemon)"
+ else
+ eval "$(seahorse-agent --variables)"
+ fi
+ echo $GPG_AGENT_INFO > ~/.gnupg/GPG_AGENT_INFO
+ export GPG_AGENT_INFO