22 lines
658 B
Bash
22 lines
658 B
Bash
#!/usr/bin/env bash
|
|
# Rofi script-mode: indexes every executable user script so the launcher
|
|
# can find shell scripts and everything else, not just .desktop apps.
|
|
|
|
declare -A SCRIPTS
|
|
|
|
for dir in "$HOME/.local/bin" "$HOME/bin" "$HOME/.cargo/bin" "$HOME/Tools/bin" "$HOME/scripts"; do
|
|
[ -d "$dir" ] || continue
|
|
while IFS= read -r -d '' f; do
|
|
[ -f "$f" ] || continue
|
|
b=$(basename "$f")
|
|
SCRIPTS["$b"]="$f"
|
|
done < <(find "$dir" -maxdepth 1 -type f -executable -print0 2>/dev/null)
|
|
done
|
|
|
|
sel="${1:-}"
|
|
if [ -n "$sel" ] && [ -n "${SCRIPTS[$sel]:-}" ]; then
|
|
exec setsid "${SCRIPTS[$sel]}" >/dev/null 2>&1
|
|
fi
|
|
|
|
printf '%s\n' "${!SCRIPTS[@]}" | sort
|