dot/e16-bindings, dot/xinitrc: Fix shell quoting for `pavucontrol'.
[profile] / dot / xinitrc
index 1710242..89105c1 100755 (executable)
@@ -108,7 +108,11 @@ fi
 ### Iniitial settings.
 
 ## Assume X sessions are secure.
-export __mdw_sechost="`hostname`"
+export __mdw_sechost="$(hostname)"
+
+## Tell things that XFCE is in charge.  This is the most desktoppy thing that
+## I run, so it's not entirely wrong.
+: ${XDG_CURRENT_DESKTOP=XFCE}; export XDG_CURRENT_DESKTOP
 
 ## Obtain the screen dimensions.
 case ",$XWIDTH,$XHEIGHT," in
@@ -217,11 +221,29 @@ start-clients () {
 
 ## Choose appropriate clients.
 emacs=$(pick_program emacs \
-  emacs23-lucid emacs24-lucid emacs23 emacs24 emacs22 emacs21 emacs)
+  emacs24-lucid emacs23-lucid emacs24 emacs23 emacs22 emacs21 \
+  emacs-lucid emacs)
 term=$(pick_program terminal pterm Eterm xterm)
 
+## If we fell back to an unversioned Emacs binary, then figure out what
+## version it actually is.
+case $emacs in
+  emacs | emacs-lucid)
+    set -- $($emacs --version | head -n1)
+    e_ver=emacs${3%%.*}${emacs#emacs}
+    ;;
+  *)
+    e_ver=$emacs
+    ;;
+esac
+info emacs-version = $e_ver
+
 ## Emacs window measurements.
 ##
+## e_colsz = width of a column in characters (from `emacs-width' metaconfig)
+## e_charwd = width of a character in pixels (assume `6x13')
+## e_colextra = additional per-column overhead in pixels
+## e_colextrachars = additional per-column overhead in character units
 ## e_colwd = basic width of a column in pixels
 ## e_hextra = extra horizontal width in pixels
 ##     Width of an N-column Emacs frame in pixels will be
@@ -233,16 +255,18 @@ term=$(pick_program terminal pterm Eterm xterm)
 ## e_lineht = height of a character line in pixels
 ## e_vextra = number of additional vertical cruft pixels
 ##     So an N-line Emacs frame takes N*e_lineht + e_vextra pixels
-e_colsz=$(mdw-conf emacs-width 77) e_charwd=6 e_colextra=30
-e_colwd=$(( e_colsz*e_charwd + e_colextra ))
-e_colchars=$(( e_colsz + 5 )) e_lineht=13
-case "$emacs" in
+e_colsz=$(mdw-conf emacs-width 77) e_charwd=6
+e_colextra=30 e_colextrachars=5 e_lineht=13
+case "$e_ver" in
   emacs21 | emacs) e_hextra=34 e_cextra=-2 e_vextra=52 ;;
   emacs22 | emacs23) e_hextra=8 e_cextra=-6 e_vextra=46 ;;
   emacs24) e_hextra=5 e_cextra=-6 e_vextra=42 ;;
   emacs23-lucid) e_hextra=7 e_cextra=-6 e_vextra=48 ;;
   emacs24-lucid) e_hextra=7 e_cextra=-5 e_vextra=48 ;;
+  emacs26-lucid) e_hextra=5 e_cextra=-6 e_vextra=51 ;;
 esac
+e_colwd=$(( e_colsz*e_charwd + e_colextra ))
+e_colchars=$(( e_colsz + e_colextrachars ))
 
 ## Terminal window measurements.
 ##
@@ -250,7 +274,14 @@ esac
 ## t_lineht, t_vextra = height parameters: if the window is N lines high,
 ##     then it will be N*t_lineht + t_vextra pixels high
 case "$term" in
-  pterm) t_wd=504 t_lineht=13 t_vextra=23 geom=-geometry;;
+  pterm)
+    ## The pterm width differs according to whether it's linked against Gtk 2
+    ## or 3.  Let's find out...
+    case $(ldd $(command -v pterm) | grep libgtk) in
+      *libgtk-2* | *libgtk-x11-2*) t_wd=504 ;;
+      *) t_wd=503 ;;
+    esac
+   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
@@ -287,7 +318,8 @@ declare -i \
 
 start-emacs () {
   GDK_NATIVE_WINDOWS=1 run bgclients noip \
-    $emacs -bg black -geometry ${emacsx}x${emacsy}+${XSCR0_X}+${XSCR0_Y}
+    $emacs -bg black -geometry ${emacsx}x${emacsy}+${XSCR0_X}+${XSCR0_Y} \
+    --mdw-splashy-startup
 }
 
 ## Now place some xterms.
@@ -409,7 +441,7 @@ EOF
        eval "${line#!}"
        ;;
       *)
-       set -- $line
+       eval "set -- $line"
        run bgclients "$@"
        ;;
     esac