diff --git a/shell/sk/bin/sk-apps b/shell/sk/bin/sk-apps index bf619e41..6d4a74f6 100755 --- a/shell/sk/bin/sk-apps +++ b/shell/sk/bin/sk-apps @@ -8,8 +8,25 @@ _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" + apps=$(find -L {,~}/Applications -iname '*.app' -maxdepth 2 -type d 2>/dev/null) + cmds=$(compgen -c 2>/dev/null) + cmd=$(printf '%s\n' "${apps[@]}" "${cmds[@]}" | sort -u | _do_sk) + if [[ -z $cmd ]]; then + exit + elif [[ $cmd == sk-* ]]; then + $cmd + else + if [[ $cmd == *.app ]]; then + open "$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" + fi + fi ;; 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)