summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/cron/make-config2
-rw-r--r--.config/login.d/00_coredumps.sh1
-rw-r--r--.config/login.d/00_path.sh9
-rw-r--r--.config/login.d/00_umask.sh1
-rw-r--r--.config/login.d/01_xdg.sh44
-rw-r--r--.config/login.d/02_tmpdir.sh3
-rw-r--r--.config/login.d/10_gpg.sh3
-rw-r--r--.config/login.d/10_java.sh6
-rw-r--r--.config/login.d/10_selected-editor.sh7
-rw-r--r--.config/login.d/10_spell-check.sh3
-rw-r--r--.config/login.d/10_xauthority.sh4
-rw-r--r--.config/login.d/90_dot-runtime.sh1
-rw-r--r--.config/login.sh84
13 files changed, 87 insertions, 81 deletions
diff --git a/.config/cron/make-config b/.config/cron/make-config
index 9ac5ac2..d079c92 100644
--- a/.config/cron/make-config
+++ b/.config/cron/make-config
@@ -1,2 +1,2 @@
#m h dom mon dow command
-*/5 * * * * cronic bash -c '. $HOME/.local/lib/path.sh && . $HOME/.local/lib/xdg.sh && make -C $XDG_CONFIG_HOME'
+*/5 * * * * cronic bash -l -c 'make -C "$XDG_CONFIG_HOME"'
diff --git a/.config/login.d/00_coredumps.sh b/.config/login.d/00_coredumps.sh
new file mode 100644
index 0000000..8fcc61b
--- /dev/null
+++ b/.config/login.d/00_coredumps.sh
@@ -0,0 +1 @@
+ulimit -c unlimited # save core dumps
diff --git a/.config/login.d/00_path.sh b/.config/login.d/00_path.sh
new file mode 100644
index 0000000..a45f8fd
--- /dev/null
+++ b/.config/login.d/00_path.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if type config-path &>/dev/null; then
+ config_path=config-path
+else
+ # Bootstrap finding config-path
+ config_path="$HOME/.local/bin/config-path"
+fi
+eval "$("$config_path" | sed 's/^/export /')"
diff --git a/.config/login.d/00_umask.sh b/.config/login.d/00_umask.sh
new file mode 100644
index 0000000..8e71ad5
--- /dev/null
+++ b/.config/login.d/00_umask.sh
@@ -0,0 +1 @@
+umask 022
diff --git a/.config/login.d/01_xdg.sh b/.config/login.d/01_xdg.sh
new file mode 100644
index 0000000..2e0b42c
--- /dev/null
+++ b/.config/login.d/01_xdg.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# This should be readable by /bin/sh, but I'm going to assume bash.
+
+# Sets up XDG environmental variables, so programs using them don't have to
+# worry about checking if they are set.
+# http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
+
+[[ -n $XDG_DATA_HOME ]] || export XDG_DATA_HOME="$HOME/.local/share"
+[[ -n $XDG_CONFIG_HOME ]] || export XDG_CONFIG_HOME="$HOME/.config"
+[[ -n $XDG_DATA_DIRS ]] || export XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
+[[ -n $XDG_CONFIG_DIRS ]] || export XDG_CONFIG_DIRS="/etc/xdg"
+[[ -n $XDG_CACHE_HOME ]] || export XDG_CACHE_HOME="$HOME/.cache"
+
+# Check if XDG_RUNTIME_DIR is set, but has a bogus setting
+if [[ -n $XDG_RUNTIME_DIR ]] && [[ ! -d $XDG_RUNTIME_DIR ]]; then
+ unset XDG_RUNTIME_DIR
+fi
+
+# Set XDG_RUNTIME_DIR if we can
+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")"
+ 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"
+ fi
+ if flock -sn 7; then
+ trap _diy_xdg_runtime_logout EXIT
+ fi
+ }
+ _diy_xdg_runtime_logout() {
+ if flock -xn 7; then
+ rm -rf -- "$(readlink "$XDG_RUNTIME_DIR")"
+ fi
+ }
+ _diy_xdg_runtime_login
+fi
diff --git a/.config/login.d/02_tmpdir.sh b/.config/login.d/02_tmpdir.sh
new file mode 100644
index 0000000..d0079aa
--- /dev/null
+++ b/.config/login.d/02_tmpdir.sh
@@ -0,0 +1,3 @@
+mkdir -p -- "$XDG_RUNTIME_DIR/tmpdir"
+export TMPDIR="$XDG_RUNTIME_DIR/tmpdir"
+ln -sfT -- "$TMPDIR" "$HOME/tmp"
diff --git a/.config/login.d/10_gpg.sh b/.config/login.d/10_gpg.sh
new file mode 100644
index 0000000..cf3c88c
--- /dev/null
+++ b/.config/login.d/10_gpg.sh
@@ -0,0 +1,3 @@
+if [[ -z $GPGKEY ]] && [[ -f "${HOME}/.gnupg/gpg.conf" ]]; then
+ export GPGKEY=`sed -nr 's/^\s*default-key\s+//p' "${GNUPG_HOME:-${HOME}/.gnupg}/gpg.conf"`
+fi
diff --git a/.config/login.d/10_java.sh b/.config/login.d/10_java.sh
new file mode 100644
index 0000000..3c49368
--- /dev/null
+++ b/.config/login.d/10_java.sh
@@ -0,0 +1,6 @@
+_JAVA_OPTIONS=''
+_JAVA_OPTIONS+=' -Dawt.useSystemAAFontSettings=on'
+_JAVA_OPTIONS+=' -Dswing.aatext=true'
+_JAVA_OPTIONS+=' -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
+_JAVA_OPTIONS+=" -Djava.io.tmpdir=$TMPDIR"
+export _JAVA_OPTIONS
diff --git a/.config/login.d/10_selected-editor.sh b/.config/login.d/10_selected-editor.sh
new file mode 100644
index 0000000..f176b8a
--- /dev/null
+++ b/.config/login.d/10_selected-editor.sh
@@ -0,0 +1,7 @@
+if [[ -f "$HOME/.selected_editor" ]]; then
+ . "$HOME/.selected_editor"
+ export SELECTED_EDITOR
+ export ALTERNATE_EDITOR
+ export EDITOR="${EDITOR:-$SELECTED_EDITOR}"
+ export VISUAL="${VISUAL:-$SELECTED_EDITOR}"
+fi
diff --git a/.config/login.d/10_spell-check.sh b/.config/login.d/10_spell-check.sh
new file mode 100644
index 0000000..9a24b7e
--- /dev/null
+++ b/.config/login.d/10_spell-check.sh
@@ -0,0 +1,3 @@
+if [[ -z "$DICTIONARY" ]] && [[ -n "$LANG" ]]; then
+ export DICTIONARY="${LANG%%.*}"
+fi
diff --git a/.config/login.d/10_xauthority.sh b/.config/login.d/10_xauthority.sh
new file mode 100644
index 0000000..a27202c
--- /dev/null
+++ b/.config/login.d/10_xauthority.sh
@@ -0,0 +1,4 @@
+# This was needed once with SSH and Fedora boxes.
+if [[ -z $XAUTHORITY ]]; then
+ export XAUTHORITY="$HOME/.Xauthority"
+fi
diff --git a/.config/login.d/90_dot-runtime.sh b/.config/login.d/90_dot-runtime.sh
new file mode 100644
index 0000000..d597cc7
--- /dev/null
+++ b/.config/login.d/90_dot-runtime.sh
@@ -0,0 +1 @@
+ln -sfT -- "$XDG_RUNTIME_DIR" ~/.runtime
diff --git a/.config/login.sh b/.config/login.sh
index 392dc88..b2cc80a 100644
--- a/.config/login.sh
+++ b/.config/login.sh
@@ -10,84 +10,8 @@
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
-umask 022
-ulimit -c unlimited # save core dumps
-## Paths #############################################################
-
-. "$HOME/.local/lib/path.sh"
-
-# TMPDIR #############################################################
-
-if [[ ! -d "$HOME/tmp" ]]; then
- tmp="$(mktemp --tmpdir -d "$USER-tmpdir.XXXXXXXXXXXXXXXXXXX")"
- ln -sf "$tmp" "$HOME/tmp"
- unset tmp
-fi
-export TMPDIR="$HOME/tmp"
-
-# XDG ################################################################
-
-. "$HOME/.local/lib/xdg.sh"
-ln -sfT -- "$XDG_RUNTIME_DIR" ~/.runtime
-
-# Settings ###########################################################
-
-# Spell check
-if [[ -z "$DICTIONARY" ]] && [[ -n "$LANG" ]]; then
- export DICTIONARY="${LANG%%.*}"
-fi
-
-# Text editor
-if [[ -f "$HOME/.selected_editor" ]]; then
- . "$HOME/.selected_editor"
- export SELECTED_EDITOR
- export ALTERNATE_EDITOR
- export EDITOR="${EDITOR:-$SELECTED_EDITOR}"
- export VISUAL="${VISUAL:-$SELECTED_EDITOR}"
-fi
-
-# GPG
-if [[ -z $GPGKEY ]] && [[ -f "${HOME}/.gnupg/gpg.conf" ]]; then
- echo 'login: Setting GPGKEY'
- export GPGKEY=`sed -nr 's/^\s*default-key\s+//p' "${HOME}/.gnupg/gpg.conf"`
-fi
-if [[ -f ~/.runtime/gpg ]]; then
- echo 'login: Setting gpg-agent info:'
- cat ~/.runtime/gpg
- . ~/.runtime/gpg
- export GPG_AGENT_INFO
- #export SSH_AUTH_SOCK
-fi
-
-# Java
-_JAVA_OPTIONS=''
-_JAVA_OPTIONS+=' -Dawt.useSystemAAFontSettings=on'
-_JAVA_OPTIONS+=' -Dswing.aatext=true'
-_JAVA_OPTIONS+=' -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
-if [[ -n $TMPDIR ]]; then
- _JAVA_OPTIONS+=" -Djava.io.tmpdir=$TMPDIR"
-fi
-export _JAVA_OPTIONS
-
-# X11
-if [[ -z $XAUTHORITY ]]; then
- export XAUTHORITY="$HOME/.Xauthority"
- #export XAUTHORITY=$HOME/.runtime/Xauthority
-fi
-
-# D-Bus
-# if [[ -z $DBUS_SESSION_BUS_ADDRESS ]] && type dbus-launch &>/dev/null; then
-# # I want a separate instance for each login
-# #dbus-launch > "${HOME}/.cache/sessions/dbus"
-# #. "${HOME}/.cache/sessions/dbus"
-# eval `dbus-launch`
-
-# export DBUS_SESSION_BUS_ADDRESS
-# export DBUS_SESSION_BUS_PID
-# fi
-
-# Load any box-specific stuff
-if [[ -f "$XDG_CONFIG_HOME/login.local.sh" ]]; then
- . "$XDG_CONFIG_HOME/login.local.sh"
-fi
+for file in "${XDG_CONFIG_HOME:-$HOME/.config}/login.d/"*.sh; do
+ . "$file"
+done
+unset file