This seems kinder to the various random Gnomey bits of desktop. I was
hoping that it would persuade Tracker to leave its databases in a good
state, but that doesn't seem to happen. Oh, well.
done
}
+###--------------------------------------------------------------------------
+### Gnome session care and feeding.
+
+session-running-p () {
+ dbus-send --session --print-reply --dest=org.freedesktop.DBus / \
+ org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager \
+ >/dev/null 2>&1
+}
+
+kill-gnome-session () {
+ if session-running-p; then
+ info "killing Gnome session manager"
+ dbus-send --session \
+ --dest=org.gnome.SessionManager /org/gnome/SessionManager \
+ org.gnome.SessionManager.Logout uint32:2
+ for i in 1 2 3 4 5; do
+ sleep 1
+ if ! session-running-p; then break; fi
+ done
+ fi
+}
+
###--------------------------------------------------------------------------
### Actually start things up.
case "$wait" in
yes)
xwait
+ kill-gnome-session
;;
no)
info "not waiting before exit"