X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/blobdiff_plain/ac03a1f6de3456e4f41330a3bf4644fa76bc1193..94e3dae355ff33f8d142f072577193c5c358df99:/dot/xinitrc diff --git a/dot/xinitrc b/dot/xinitrc index 3141367..8fce589 100755 --- a/dot/xinitrc +++ b/dot/xinitrc @@ -70,6 +70,13 @@ EOF esac done +###-------------------------------------------------------------------------- +### Preliminary hook. + +if [ -r $HOME/.xinitrc-prehook ]; then + . $HOME/.xinitrc-prehook +fi + ###-------------------------------------------------------------------------- ### Iniitial settings. @@ -98,7 +105,7 @@ initialize () { ###-------------------------------------------------------------------------- ### Start a window manager. -wm=$(pick_program window-manager enlightenment e16 twm) +wm=$(pick_program window-manager e16 compiz enlightenment e17 twm) wmopts="" case "$wm,$vnc" in enlightenment,yes | e16,yes) @@ -329,6 +336,28 @@ EOF 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. @@ -353,6 +382,7 @@ esac case "$wait" in yes) xwait + kill-gnome-session ;; no) info "not waiting before exit"