diff options
Diffstat (limited to '.local/bin')
-rwxr-xr-x | .local/bin/config-path | 67 | ||||
-rwxr-xr-x | .local/bin/pick | 10 | ||||
-rwxr-xr-x | .local/bin/x-pdf | 3 | ||||
-rwxr-xr-x | .local/bin/x-terminal-emulator | 3 | ||||
-rwxr-xr-x | .local/bin/x-www-browser | 3 | ||||
-rwxr-xr-x | .local/bin/xmessage | 2 |
6 files changed, 51 insertions, 37 deletions
diff --git a/.local/bin/config-path b/.local/bin/config-path index 6b9019c..f4c2342 100755 --- a/.local/bin/config-path +++ b/.local/bin/config-path @@ -1,16 +1,22 @@ #!/bin/bash -# All the prefixes to consider -prefixes=( - "$HOME" - "$HOME/.local.`uname -m`" - "$HOME/.local" - "$HOME/.prefix.`uname -m`" - "$HOME/.prefix" - "$HOME"/.gem/ruby/* -) - -###################################################################### +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 +} in_array() { local needle=$1; shift @@ -22,30 +28,41 @@ in_array() { return 1 } -# Import existing values -IFS=: paths=($PATH) -IFS=: rubylibs=($RUBYLIB) +add_prefix() { + local prefix=$1 + local dir -# Scan through prefixes -for prefix in "${prefixes[@]}"; do # PATH dir="$prefix/bin" if [[ -d "$dir" ]] && ! in_array "$dir" "${paths[@]}"; then paths=("$dir" "${paths[@]}") fi + # RUBYLIB dir="$prefix/lib" if [[ -d "$dir" ]] && ! in_array "$dir" "${rubylibs[@]}"; then rubylibs=("$dir" "${rubylibs[@]}") fi -done +} -# Finally, print our values -IFS=: PATH="${paths[*]}" -IFS=: RUBYLIB="${rubylibs[*]}" +main() { + # Import existing values + declare -ga paths rubylibs + IFS=: paths=($PATH) + IFS=: rubylibs=($RUBYLIB) + + the_guts + + # Put our values into the env variables + IFS=: PATH="${paths[*]}" + IFS=: RUBYLIB="${rubylibs[*]}" + + # Finally, print the values + # The sed bit here is the only time we call an external program + { + declare -p PATH + declare -p RUBYLIB + } | sed 's/^declare \(-\S* \)*//' +} -# The sed bit here is the only time we call an external program -{ - declare -p PATH - declare -p RUBYLIB -} | sed 's/^declare \(-\S* \)*//' +main diff --git a/.local/bin/pick b/.local/bin/pick index ed2d44d..7458041 100755 --- a/.local/bin/pick +++ b/.local/bin/pick @@ -19,8 +19,8 @@ if [[ $1 = -s ]]; then shift # Scan to find a running instance for prog in "$@"; do - if [[ -n "`pgrep $prog`" ]]; then - printf '%s\n' "$prog" + if [[ -n "$(pgrep "${prog%% *}")" ]]; then + printf -- '%s\n' "$prog" exit 0 fi done @@ -28,11 +28,11 @@ fi # Scan to find one that is installed for prog in "$@"; do - if [[ -x "`which $prog 2>/dev/null`" ]]; then - printf '%s\n' "$prog" + if [[ -x "$(which "${prog%% *}" 2>/dev/null)" ]]; then + printf -- '%s\n' "$prog" exit 0 fi done -printf '%s\n' "$cmd: no suitable program found" +printf -- '%s\n' "$cmd: no suitable program found" >&2 exit 1 diff --git a/.local/bin/x-pdf b/.local/bin/x-pdf index 3610fde..8f9ef60 100755 --- a/.local/bin/x-pdf +++ b/.local/bin/x-pdf @@ -1,4 +1,3 @@ #!/bin/sh -`pick zathura mupdf okular evince xpdf` "$@" -exit $? +exec $(pick atril zathura mupdf okular evince xpdf 'emacsclient -c') "$@" diff --git a/.local/bin/x-terminal-emulator b/.local/bin/x-terminal-emulator index 049b081..2e158cf 100755 --- a/.local/bin/x-terminal-emulator +++ b/.local/bin/x-terminal-emulator @@ -1,4 +1,3 @@ #!/bin/sh -`pick emacsterm urxvt gnome-terminal xterm` "$@" -exit $? +exec $(pick 'emacsterm -c' 'urxvt' 'xterm' 'gnome-terminal') "$@" diff --git a/.local/bin/x-www-browser b/.local/bin/x-www-browser index bbd8943..b0b05e0 100755 --- a/.local/bin/x-www-browser +++ b/.local/bin/x-www-browser @@ -1,4 +1,3 @@ #!/bin/sh -`pick -s conkeror iceweasel icecat firefox` "$@" -exit $? +exec $(pick -s iceweasel icecat firefox conkeror) "$@" diff --git a/.local/bin/xmessage b/.local/bin/xmessage index bd30b5e..08fd95e 100755 --- a/.local/bin/xmessage +++ b/.local/bin/xmessage @@ -1,2 +1,2 @@ #!/bin/sh -gxmessage $@ -fn 'Monospace' +exec gxmessage $@ -fn 'Monospace' |