#!/bin/sh SEARCH_PATHS=$(echo $XDG_DATA_HOME:$XDG_DATA_DIRS | tr ':' '\n' | awk '{print $1 "/applications"}') LIST=$(find -L $SEARCH_PATHS -maxdepth 1 -name "*.desktop" -print0 2>/dev/null | xargs -0 awk -F'=' ' BEGINFILE { name=""; section="" } /^\[Desktop Entry\]/ { section="main" } /^\[Desktop Action / { section=substr($0, 17, length($0)-17) } /^Name=/ && section=="main" { name=$2 } ENDFILE { if (name != "") { printf "%s:%s\n", FILENAME, name } } ') CHOICE=$(echo "$LIST" | cut -d: -f2 | sort -u | $MENU "$@") [ -z "$CHOICE" ] && exit FILE=$(echo "$LIST" | grep -F ":$CHOICE" | head -n 1 | cut -d: -f1) gtk4-launch $(basename $FILE)