description "GPG Agent" author "Stéphane Graber " start on starting xsession-init pre-start script GNUPGHOME=$HOME/.gnupg [ -d $GNUPGHOME ] || { stop; exit 0; } grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" || { stop; exit 0; } GPG_SSH_AGENT= grep -qs '^[[:space:]]*enable-ssh-support' "$GNUPGHOME/gpg-agent.conf" if [ $? -eq 0 ]; then GPG_SSH_AGENT=yes fi eval "$(gpg-agent --daemon --sh)" >/dev/null initctl set-env --global GPG_AGENT_INFO=$GPG_AGENT_INFO if [ -n "$GPG_SSH_AGENT" ]; then initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK initctl set-env --global SSH_AGENT_PID=$SSH_AGENT_PID fi end script post-stop script GPG_AGENT_PID=$(echo $GPG_AGENT_INFO | cut -d : -f2) kill $GPG_AGENT_PID 2>/dev/null || true initctl unset-env --global GPG_AGENT_INFO if [ -n $SSH_AGENT_PID -a \( $SSH_AGENT_PID -eq $GPG_AGENT_PID \) ]; then # okay the gpg-agent acted as ssh-agent initctl unset-env --global SSH_AUTH_SOCK initctl unset-env --global SSH_AGENT_PID fi end script