From 5e51e6c642767bf6fef80a6a28dc5cd57a649cfa Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Tue, 14 Apr 2026 18:40:28 +0530 Subject: fixed the fzf-launcher script to properly show all launchable applications --- modules/scripts/fzf-launcher.sh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/scripts/fzf-launcher.sh b/modules/scripts/fzf-launcher.sh index 79853f1..5654d80 100644 --- a/modules/scripts/fzf-launcher.sh +++ b/modules/scripts/fzf-launcher.sh @@ -12,30 +12,42 @@ for dir in "${DIRS[@]}"; do for f in "$dir"/*.desktop; do [[ -f "$f" ]] || continue + # Skip hidden entries grep -q "^NoDisplay=true" "$f" && continue grep -q "^Hidden=true" "$f" && continue + + # Only GUI apps grep -q "^Type=Application" "$f" || continue grep -q "^Terminal=true" "$f" && continue + # Skip ONLY actual junk categories (not System!) categories=$(grep -m1 "^Categories=" "$f" | cut -d= -f2-) if [[ -n "$categories" ]]; then - echo "$categories" | grep -qE "(Settings|System|Screensaver|DesktopSettings|PackageManager)" && continue + echo "$categories" | grep -qE "(Settings|Screensaver|DesktopSettings)" && continue fi + # Get name (handle localized fallback) name=$(grep -m1 "^Name=" "$f" | cut -d= -f2-) + if [[ -z "$name" ]]; then + name=$(grep -m1 -E "^Name\[.*\]=" "$f" | cut -d= -f2-) + fi + + # Get exec exec=$(grep -m1 "^Exec=" "$f" | cut -d= -f2-) [[ -z "$name" || -z "$exec" ]] && continue - # Remove field codes properly + # Remove field codes like %U %F etc. exec=$(echo "$exec" | sed -E 's/ ?%[a-zA-Z]//g') entries+="$name"$'\t'"$exec"$'\n' done done +# Deduplicate + sort entries=$(printf '%s' "$entries" | sort -fu -t$'\t' -k1,1) +# FZF selection chosen=$(printf '%s' "$entries" | "$FZF" \ --prompt='Launch: ' \ --layout=reverse \ @@ -47,5 +59,6 @@ chosen=$(printf '%s' "$entries" | "$FZF" \ exec_cmd=$(printf '%s' "$chosen" | cut -d$'\t' -f2) +# Launch safely eval "$exec_cmd" &>/dev/null & disown -- cgit v1.2.3