42 lines
998 B
Text
42 lines
998 B
Text
|
#!/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}]} )
|