-if stuff=$(gnome-keyring-daemon -s 2>/dev/null); then
- eval "$stuff"; export GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
+if { { [ "$GNOME_KEYRING_CONTROL" ] &&
+ [ -s "$GNOME_KEYRING_CONTROL" ]; } ||
+ { [ "$DBUS_SESSION_BUS_ADDRESS" ] &&
+ dbus-send --session --print-reply --dest=org.freedesktop.DBus \
+ / org.freedesktop.DBus.GetNameOwner string:org.gnome.keyring \
+ >/dev/null 2>/dev/null; }; } &&
+ stuff=$(gnome-keyring-daemon -s -c ssh 2>/dev/null)
+then
+ eval "$stuff"
+ export SSH_AUTH_SOCK