#!/bin/sh set -e [ -n "$DEBUG" ] && set -x # make sure there we are the only running menu pgrep -x bemenu >/dev/null && killall -INT bemenu # always source the config to make sure . "$HOME"/.config/bemenu.conf arg0=bemenu prompt=${MENU_PROMPT:-󰈶󰩤} args= idx=0 while test $# -gt $idx; do case "$1" in -run) arg0=bemenu-run prompt="󰏌" shift ;; -drun) # arg0=bemenu-drun # prompt="󱂬" shift desktopfiles() { fd -e desktop . \ /usr/share/applications/ \ /usr/local/share/applications/ \ /var/lib/flatpak/app/*/current/active/export/share/applications/ \ "$XDG_DATA_HOME"/applications/ 2>/dev/null || true } list_apps() { desktopfiles | xargs -I{} awk -F= '/^Name=/{ print $2;exit; }' {} | sort -u } get_desktopfile() { desktopfiles | xargs -I{} awk -v name="$1" -F= '/^Name=/{ if($2==name) print FILENAME }' {} | sort -u | head -n1 } app=$(list_apps | MENU_PROMPT="󱂬" "$0") [ -z "$app" ] && exit 0 desktopfile=$(get_desktopfile "$app") [ -z "$desktopfile" ] && exit 0 nohup xdg-exec "$desktopfile" "$@" >/dev/null 2>&1 & exit 0 ;; -p) shift prompt="$1" shift ;; -x) shift MENU_PASSWORD=1 ;; esac idx=$((idx + 1)) done [ -n "${MENU_PASSWORD}" ] && args="${args} --password" [ -n "${MENU_POPUP}" ] && args="${args} --center --width-factor 0.5 --border 2 --list 8" # --fixed-height exec "${arg0}" --prompt "${prompt}" ${args} "$@"