summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2015-02-07 00:26:11 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2015-02-07 00:26:11 -0500
commit865a768e44624c465e9d42c6ca91d0ef29a8e7ad (patch)
treeb7e960b53a230cd1f9840493a594e1c78c95e290
parentf5c41d73b4c085691f2c01dd80366d08cb352a01 (diff)
backport changes from cs-purdue
-rwxr-xr-x[-rw-r--r--].config/X11/login2
-rw-r--r--.config/bash/logout.sh9
-rw-r--r--.config/emacs/init.el5
-rw-r--r--.config/login.d/01_xdg.sh7
-rw-r--r--.config/symlinks1
-rwxr-xr-x.local/bin/config-path90
-rwxr-xr-x.local/bin/config-symlinks9
7 files changed, 67 insertions, 56 deletions
diff --git a/.config/X11/login b/.config/X11/login
index 03bad2a..84931df 100644..100755
--- a/.config/X11/login
+++ b/.config/X11/login
@@ -6,4 +6,4 @@
# Executed by xdm/gdm/kdm at login
#
-/bin/bash --login -i ~/.xinitrc
+exec bash --login -i ~/.xinitrc
diff --git a/.config/bash/logout.sh b/.config/bash/logout.sh
index de4f5f7..5dd8f7d 100644
--- a/.config/bash/logout.sh
+++ b/.config/bash/logout.sh
@@ -1,7 +1,4 @@
-# ~/.bash_logout: executed by bash(1) when login shell exits.
+# ~/.bash_logout: sourced by bash(1) when login shell exits.
-# when leaving the console clear the screen to increase privacy
-
-if [ "$SHLVL" = 1 ]; then
- [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
-fi
+# Clear the screen for privacy's sake.
+clear
diff --git a/.config/emacs/init.el b/.config/emacs/init.el
index fabe70e..f570a1a 100644
--- a/.config/emacs/init.el
+++ b/.config/emacs/init.el
@@ -1,4 +1,5 @@
-;; This config requires Emacs 24(+?)
+;; This config requires Emacs 24.4(+?)
+;; Without (advice-add) it should work in older versions of Emacs 24.
;;;; Use XDG-ish locations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq xdg-cache-home (file-name-as-directory (or (getenv "XDG_CACHE_HOME") "~/.cache")))
(setq
@@ -128,6 +129,8 @@
;; Misc. crap
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+(setq inhibit-startup-screen t)
+(setq-default truncate-lines t)
(defun align-regexp--use-spaces (orig-fun &rest args)
"Use spaces for alignment"
diff --git a/.config/login.d/01_xdg.sh b/.config/login.d/01_xdg.sh
index 2e0b42c..07cea90 100644
--- a/.config/login.d/01_xdg.sh
+++ b/.config/login.d/01_xdg.sh
@@ -20,16 +20,15 @@ fi
if [[ -z $XDG_RUNTIME_DIR ]] && type flock &>/dev/null; then
_diy_xdg_runtime_login() {
export XDG_RUNTIME_DIR="$XDG_CACHE_HOME/xdg-runtime-dir/$HOSTNAME"
- readonly XDG_RUNTIME_DIR
# There's a race condition here, between the `ln -s` and `flock`.
# But it's not like I'll be hammering a box with logins.
- if [[ ! -d "$XDG_CACHE_HOME" ]]; then
- local tmp="$(mktemp --tmpdir -- "${USER}@${HOSTNAME}-runtime.XXXXXXXXXX")"
+ if [[ ! -d "$XDG_RUNTIME_DIR" ]]; then
+ local tmp="$(mktemp -d --tmpdir -- "${USER}@${HOSTNAME}-runtime.XXXXXXXXXX")"
mkdir -p -- "$XDG_CACHE_HOME/xdg-runtime-dir"
ln -sfT -- "$tmp" "$XDG_RUNTIME_DIR"
fi
if ! [[ /dev/fd/7 -ef "$XDG_CACHE_HOME/xdg-runtime-dir/.lock" ]]; then
- exec 7 >"$XDG_CACHE_HOME/xdg-runtime-dir/.lock"
+ exec 7>"$XDG_CACHE_HOME/xdg-runtime-dir/.lock"
fi
if flock -sn 7; then
trap _diy_xdg_runtime_logout EXIT
diff --git a/.config/symlinks b/.config/symlinks
index 030954c..37a7267 100644
--- a/.config/symlinks
+++ b/.config/symlinks
@@ -8,6 +8,7 @@
.config/X11/clientrc .xinitrc
.config/X11/serverrc .xserverrc
.config/X11/login .xsession
+.config/login.sh .xprofile
# Bash
.config/bash/rc.sh .bashrc
diff --git a/.local/bin/config-path b/.local/bin/config-path
index f4c2342..7cd1fcd 100755
--- a/.local/bin/config-path
+++ b/.local/bin/config-path
@@ -1,22 +1,14 @@
#!/bin/bash
-the_guts() {
- # Add generic prefixes
- add_prefix "$HOME"
- add_prefix "$HOME/.local.$(uname -m)"
- add_prefix "$HOME/.local"
- add_prefix "$HOME/.prefix.$(uname -m)"
- add_prefix "$HOME/.prefix"
-
- # Add rubygem prefixes
- local dir
- for dir in "$HOME"/.gem/*; do
- # Only add it if we have that type of ruby
- if type "${dir##*/}" &>/dev/null; then
- add_prefix "$dir"/*
- fi
- done
-}
+# All the prefixes to consider
+prefixes=(
+ "$HOME"
+ "$HOME/.local.$(uname -m)"
+ "$HOME/.local"
+ "$HOME/.prefix.$(uname -m)"
+ "$HOME/.prefix"
+ "$HOME"/.gem/ruby/*
+)
in_array() {
local needle=$1; shift
@@ -28,41 +20,55 @@ in_array() {
return 1
}
-add_prefix() {
- local prefix=$1
- local dir
+var_init() {
+ eval "ary_$1=(\$$1)"
+}
- # PATH
- dir="$prefix/bin"
- if [[ -d "$dir" ]] && ! in_array "$dir" "${paths[@]}"; then
- paths=("$dir" "${paths[@]}")
- fi
+var_add() {
+ local varname=ary_$1; shift
+ local var_all="${varname}[@]"
+ local dirs=("$@")
- # RUBYLIB
- dir="$prefix/lib"
- if [[ -d "$dir" ]] && ! in_array "$dir" "${rubylibs[@]}"; then
- rubylibs=("$dir" "${rubylibs[@]}")
- fi
+ local dir
+ for dir in "${dirs[@]}"; do
+ if [[ -d "$dir" ]] && ! in_array "$dir" "${!var_all}"; then
+ eval "$varname=(\"\$dir\" \"\${$var_all}\")"
+ fi
+ done
+}
+
+var_done() {
+ eval "$1=\"\${ary_$1[*]}\""
+ declare -p $1
}
main() {
+ IFS=:
# Import existing values
- declare -ga paths rubylibs
- IFS=: paths=($PATH)
- IFS=: rubylibs=($RUBYLIB)
-
- the_guts
+ var_init PATH
+ var_init MANPATH
+ var_init LD_LIBRARY_PATH
+ var_init RUBYLIB
+ var_init PERL5LIB
- # Put our values into the env variables
- IFS=: PATH="${paths[*]}"
- IFS=: RUBYLIB="${rubylibs[*]}"
+ # Scan through prefixes
+ for prefix in "${prefixes[@]}"; do
+ var_add PATH "$prefix/bin" "$prefix/sbin"
+ var_add MANPATH "$prefix/share/man"
+ var_add LD_LIBRARY_PATH "$prefix"/lib{,32,64}
+ var_add RUBYLIB "$prefix"/lib{,32,64}
+ var_add PERL5LIB "$prefix"/lib{,32,64}/perl5
+ done
# Finally, print the values
- # The sed bit here is the only time we call an external program
+ # The `sed` bit here is the only time we call an external program
{
- declare -p PATH
- declare -p RUBYLIB
+ var_done PATH
+ var_done MANPATH
+ var_done LD_LIBRARY_PATH
+ var_done RUBYLIB
+ var_done PERL5LIB
} | sed 's/^declare \(-\S* \)*//'
}
-main
+main "$@"
diff --git a/.local/bin/config-symlinks b/.local/bin/config-symlinks
index 0831ca3..7d889f0 100755
--- a/.local/bin/config-symlinks
+++ b/.local/bin/config-symlinks
@@ -1,6 +1,8 @@
#!/bin/bash
-sed -e '/^\s*$/d' -e '/#/d' symlinks | while read _target _link; do
+declare -i ret=0
+
+while read _target _link; do
target="$(sed -rn 's|[^/]+/|../|g;s|/[^/]+$|/|p' <<<"$_link")${_target}"
link="$HOME/$_link"
if [[ -L "$link" ]]; then
@@ -8,8 +10,11 @@ sed -e '/^\s*$/d' -e '/#/d' symlinks | while read _target _link; do
fi
if [[ -e "$link" ]]; then
echo "ERROR: file exists: $link" >> /dev/stderr
+ ret=1
else
mkdir -p "${link%/*}"
ln -s "$target" "$link"
fi
-done
+done < <(sed -e '/^\s*$/d' -e '/#/d' "$XDG_CONFIG_HOME/symlinks")
+
+exit $ret