X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/079b6c2b5798f8ef74258a9fc05bb1f1770b0b9c..596c5c5fd32e20997b49312af1aae8fd588a0f69:/dot/xinitrc diff --git a/dot/xinitrc b/dot/xinitrc index da8c51c..210a76d 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,21 +94,21 @@ 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 ## Key mappings. - xmodmap -e 'keysym BackSpace = BackSpace BackSpace' - - ## Gnome settings. - case $vnc in no) run bginit gnome-settings-daemon ;; esac + xmodmap $HOME/.xmodmap + if [ -r $HOME/.xmodmap-local ]; then + xmodmap $HOME/.xmodmap-local + fi } ###-------------------------------------------------------------------------- ### 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) @@ -109,8 +116,36 @@ case "$wm,$vnc" in ;; esac -start-window-manager () { +start-e16 () { run bginit $wm $wmopts + win=nil + for i in $(seq 10); do + sleep 1 + if eesh version >/dev/null 2>&1; then + win=t + break + fi + done + case $win in + t) + info "$wm started ok" + run init xsetroot -cursor_name left_ptr + ;; + nil) + info "$wm failed to start!" + ;; + esac +} + +start-window-manager () { + case $(type -t start-$wm || echo "not-found") in + function) + start-$wm $wmopts + ;; + *) + run bginit $wm $wmopts + ;; + esac } ###-------------------------------------------------------------------------- @@ -119,26 +154,23 @@ start-window-manager () { start-clients-local () { :; } start-clients () { - ## Mail notification. - run bginit mail-notification - - ## System monitor. - case $vnc in no) run bginit gkrellm ;; esac - ## Screensaver. - case $vnc in - no) - run init xscreensaver-command -exit - run bginit xscreensaver -no-splash + ## Gnome session. + case "$vnc,$(xfce4-session --version 2>&1),$(gnome-session --version 2>&1)" + in + no,xfce4-session*) + run bginit xfce4-session + ;; + 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,*,gnome-session*) + run bginit gnome-session ;; esac - ## Panel. - case $vnc in no) run bginit gnome-panel ;; esac - - ## System tray. - ## run bginit stalonetray - ## Local clients. start-clients-local } @@ -250,7 +282,7 @@ start-xterms () { req () { declare title=$1 hist=$2; shift 2 - cmd=$(xgetline -t "$title" -p "Command:" -Hl "$HOME/$hist") && + cmd=$(xgetline -t "$title" -p "_Command:" -Hl "$HOME/$hist") && exec "$@" "$cmd" } @@ -304,7 +336,7 @@ EOF eval "${line#!}" ;; *) - set -- $line + set -- $line run bgclients "$@" ;; esac @@ -312,6 +344,38 @@ 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 +} + +dbus-service-running-p () { + dbus-send >/dev/null 2>&1 --session --print-reply \ + --dest=org.freedesktop.DBus / \ + org.freedesktop.DBus.GetNameOwner string:$1 +} + +kill-gnome-session () { + win=nil + while read service object logout; do + if dbus-service-running-p $service; then win=t; break; fi + done <