X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/5587cf4f528512164052d11e12196416a490e30e..2351081f90923e4a56176caf8b35256ac5328658:/dot/xinitrc diff --git a/dot/xinitrc b/dot/xinitrc index 750bc9e..8fce589 100755 --- a/dot/xinitrc +++ b/dot/xinitrc @@ -71,6 +71,13 @@ EOF done ###-------------------------------------------------------------------------- +### Preliminary hook. + +if [ -r $HOME/.xinitrc-prehook ]; then + . $HOME/.xinitrc-prehook +fi + +###-------------------------------------------------------------------------- ### Iniitial settings. ## Assume X sessions are secure. @@ -87,7 +94,7 @@ initialize () { run init xrdb -override $HOME/.Xdefaults ## Random xsettery. - run init xset b 10 2000 50 + run init xset b 5 2000 50 run init xset r rate 500 50 run init xset m 2 1 @@ -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) @@ -144,8 +151,18 @@ start-window-manager () { start-clients-local () { :; } start-clients () { + ## Gnome session. - case $vnc in no) run bginit gnome-session ;; esac + case "$vnc,$(gnome-session --version 2>&1)" in + no,gnome-session\ 2.3[2-9].* | \ + no,gnome-session\ 2.4[0-9].* | \ + no,gnome-session\ 2.[1-9][0-9][0-9]*) + run bginit gnome-session --session mdw + ;; + no,*) + run bginit gnome-session + ;; + esac ## Local clients. start-clients-local @@ -312,7 +329,7 @@ EOF eval "${line#!}" ;; *) - set -- $line + set -- $line run bgclients "$@" ;; esac @@ -320,6 +337,28 @@ EOF } ###-------------------------------------------------------------------------- +### 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. if [ -f $HOME/.xinitrc-local ]; then @@ -343,6 +382,7 @@ esac case "$wait" in yes) xwait + kill-gnome-session ;; no) info "not waiting before exit"