summaryrefslogtreecommitdiff
path: root/private_dot_local/bin/executable_menu-drun
blob: e6556728b0f4e39a8f75d4ab0b731d52bd54669f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/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)