punktdateien/bash/bin/launch-menu-apps

41 lines
998 B
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# Define associative array
declare -A apps=()
[[ ! -d "${HOME:?}/.config/launch-menu-apps.d" ]] && (
mkdir -p "${HOME}/.config/launch-menu-apps.d"
cat << EOF >> "${HOME}/.config/launch-menu-apps.d/template.sh.disabled"
#!/usr/bin/env bash
set -euo pipefail
apps+=(
["Example application"]="example-application"
["Test script"]="${HOME}/.local/bin/test-script"
)
EOF
)
# shellcheck disable=SC2012
[[ "$(ls -1 "${HOME}"/.config/launch-menu-apps.d/*.sh 2>/dev/null | wc -l)" == "0" ]] && exit 0
# Append entries
for script in "${HOME}"/.config/launch-menu-apps.d/*.sh; do
echo ":: Sourcing script ${script}"
# shellcheck disable=SC1090
source "${script}"
done
# Create new variables
apps_keys=
for app in "${!apps[@]}"; do
[[ -n "${apps_keys}" ]] && apps_keys="${apps_keys}\n"
apps_keys=${apps_keys}${app}
done
# Make selection
selection=$(echo -e "${apps_keys}" | launch-menu)
# Execute
# shellcheck disable=SC2086
( eval ${apps[${selection}]} )