xinitrc: Update pterm width.
[profile] / xinitrc
diff --git a/xinitrc b/xinitrc
index 60a11e6..1eed5ba 100755 (executable)
--- a/xinitrc
+++ b/xinitrc
@@ -91,6 +91,9 @@ initialize () {
   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
 }
@@ -113,6 +116,8 @@ start-window-manager () {
 ###--------------------------------------------------------------------------
 ### Random useful clients.
 
+start-clients-local () { :; }
+
 start-clients () {
   ## Mail notification.
   run bginit mail-notification
@@ -130,6 +135,9 @@ start-clients () {
 
   ## Panel.
   case $vnc in no) run bginit gnome-panel ;; esac
+
+  ## Local clients.
+  start-clients-local
 }
 
 ###--------------------------------------------------------------------------
@@ -155,7 +163,7 @@ esac
 
 ## Terminal window measurements.
 case "$term" in
-  pterm) t_wd=503 t_lineht=13 t_vextra=23 geom=-geometry;;
+  pterm) t_wd=504 t_lineht=13 t_vextra=23 geom=-geometry;;
   Eterm) t_wd=504 t_lineht=13 t_vextra=23 geom=-g;;
   xterm) t_wd=507 t_lineht=13 t_vextra=27 geom=-geometry;;
 esac
@@ -200,7 +208,7 @@ start-emacs () {
 start-xterms () {
 
   ## Initialize some parameters.
-  declare -i x="ecols * e_colwd + e_hextra"
+  declare -i x="ecols * e_colwd + e_hextra" xb=xbound
   declare -i n=0 pgx=0 l h y ht
   declare -i hstd="35 * t_lineht + t_vextra" hmin="25 * t_lineht + t_vextra"
 
@@ -208,9 +216,9 @@ start-xterms () {
   while :; do
 
     ## Start a new iteration.
-    if ((x + t_wd > xbound)); then
+    if ((x + t_wd > xb)); then
       if ((n >= 3)); then break; fi
-      x="pgx + XWIDTH" pgx="pgx + XWIDTH" xbound="xbound + XWIDTH"
+      x="pgx + XWIDTH" pgx="pgx + XWIDTH" xb="xb + XWIDTH"
     fi
 
     ## Make large xterms.
@@ -234,6 +242,15 @@ start-xterms () {
 }
 
 ###--------------------------------------------------------------------------
+### Requesters.
+
+req () {
+  declare title=$1 hist=$2; shift 2
+  cmd=$(xgetline -t "$title" -p "Command:" -Hl "$HOME/$hist") &&
+  exec "$@" "$cmd"
+}
+
+###--------------------------------------------------------------------------
 ### Final waiting.
 
 atom=XINIT_COMMAND$atomtag
@@ -250,6 +267,7 @@ xwait () {
        xmsg -I -t "xinitrc help" -d "xinitrc commands" - <<EOF &
 :help
 :emacs :xterms :window-manager :clients
+:ask-run :ask-command
 :init
 :terminal
 ! SHELL-COMMAND
@@ -269,6 +287,12 @@ EOF
        info "restarting xinitrc"
        exec "$0" wait nostart
        ;;
+      :ask-run)
+       req "Shell command" .cmd.hist xcatch -FMiscFixed6x13 -- sh -c&
+       ;;
+      :ask-command)
+       req "xinit command" .xinit.hist xatom set XINIT_COMMAND$atomtag&
+       ;;
       :*)
        xmsg -E -t "xinitrc error" "Unknown command \`$line'" &
        ;;
@@ -286,6 +310,10 @@ EOF
 ###--------------------------------------------------------------------------
 ### Actually start things up.
 
+if [ -f $HOME/.xinitrc-local ]; then
+  . $HOME/.xinitrc-local
+fi
+
 case "$start" in
   yes)
     info "starting standard clients"