diff options
-rwxr-xr-x[-rw-r--r--] | .config/X11/login | 2 | ||||
-rw-r--r-- | .config/bash/logout.sh | 9 | ||||
-rw-r--r-- | .config/emacs/init.el | 5 | ||||
-rw-r--r-- | .config/login.d/01_xdg.sh | 7 | ||||
-rw-r--r-- | .config/symlinks | 1 | ||||
-rwxr-xr-x | .local/bin/config-path | 90 | ||||
-rwxr-xr-x | .local/bin/config-symlinks | 9 |
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 |