From d15b026b03f2b3c5a5890f44d34df8337b8d0bb3 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sat, 12 Oct 2013 19:25:29 -0400 Subject: fix a typo in xdg.sh --- .local/lib/xdg.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to '.local/lib') diff --git a/.local/lib/xdg.sh b/.local/lib/xdg.sh index 28c7e64..2241d2e 100644 --- a/.local/lib/xdg.sh +++ b/.local/lib/xdg.sh @@ -1,4 +1,4 @@ --nw#!/bin/bash +#!/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 -- cgit v1.2.3-2-g168b From 11e461d0fea5aaf33a31ebb88a17135b46c9483d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 29 Jan 2015 00:32:22 -0500 Subject: .local/lib/xdg.sh: handle setting XDG_RUNTIME_DIR better This is based off of the TMPDIR hack I use on the Purdue CS boxes. --- .local/lib/xdg.sh | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to '.local/lib') diff --git a/.local/lib/xdg.sh b/.local/lib/xdg.sh index 2241d2e..20fab4b 100644 --- a/.local/lib/xdg.sh +++ b/.local/lib/xdg.sh @@ -17,7 +17,28 @@ if [[ -n $XDG_RUNTIME_DIR ]] && [[ ! -d $XDG_RUNTIME_DIR ]]; then fi # Set XDG_RUNTIME_DIR if we can -if [[ -z $XDG_RUNTIME_DIR ]] && [[ -n $TMPDIR ]]; then - export XDG_RUNTIME_DIR="$TMPDIR/xdg-runtime" - install -dm0700 "$XDG_RUNTIME_DIR" +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 -- cgit v1.2.3-2-g168b From 2a6dc16a75f4d7beed631d97a99b6a1fc82c4e79 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 29 Jan 2015 01:19:57 -0500 Subject: split login.sh into login.d --- .local/lib/path.sh | 9 --------- .local/lib/xdg.sh | 44 -------------------------------------------- 2 files changed, 53 deletions(-) delete mode 100644 .local/lib/path.sh delete mode 100644 .local/lib/xdg.sh (limited to '.local/lib') diff --git a/.local/lib/path.sh b/.local/lib/path.sh deleted file mode 100644 index a45f8fd..0000000 --- a/.local/lib/path.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/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/.local/lib/xdg.sh b/.local/lib/xdg.sh deleted file mode 100644 index 20fab4b..0000000 --- a/.local/lib/xdg.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/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 -- cgit v1.2.3-2-g168b