#!/usr/bin/env bash # Uses fzf as an application launcher. # # Requires: fzf, lnch case $OSTYPE in darwin*) cmd=$(find -L {,~}/Applications -iname '*.app' -maxdepth 2 -type d 2>/dev/null | sort -u | gui-fzf) [[ $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 | gui-fzf) if [[ $cmd ]]; then if [[ $cmd == fzf-* ]]; then $cmd else if ! which lnch >/dev/null; then notify-send 'lnch is not installed' 'run "go get github.com/oem/lnch"' exit 1 fi # This 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 fi ;; esac