#!/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}]} )