helm/shell/sk/bin/sk-apps
2018-03-23 15:29:50 -04:00

36 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
# Uses skim as an application launcher.
#
# Requires: skim, lnch
_do_sk() { sk --prompt='open > '; }
case $OSTYPE in
darwin*)
cmd=$(find -L {,~}/Applications -iname '*.app' -maxdepth 2 -type d 2>/dev/null | sort -u | _do_sk)
[[ -n $cmd ]] && open "$cmd"
;;
linux*)
cmd=$(echo -n "$PATH" | xargs -d: -I{} -r -- find -L {} -maxdepth 1 -mindepth 1 -type f -executable -printf '%P\n' 2>/dev/null | sort -u | _do_sk)
if [[ -z $cmd ]]; then
exit
elif [[ $cmd == sk-* ]]; then
$cmd
elif ! command -v lnch >/dev/null; then
>&2 echo "lnch not installed, run 'go get github.com/oem/lnch'"
exit 1
else
# disowns the subprocess from the parent shell (i.e. if that shell gets
# closed, the subprocess will survive).
lnch "$cmd"
# OPTIONAL: requires shell/+tmux
if command -v tmux-session-name >/dev/null; then
# If this was used from a scratch tmux terminal, close it
[[ "$(tmux-session-name)" == scratch ]] && tmux kill-session -t scratch
fi
fi
;;
esac