diff options
Diffstat (limited to 'bin/menu')
| -rwxr-xr-x | bin/menu | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/bin/menu b/bin/menu index 23e7801..b3e4759 100755 --- a/bin/menu +++ b/bin/menu @@ -3,65 +3,45 @@ set -e [ -n "$DEBUG" ] && set -x # make sure there we are the only running menu -pgrep -x bemenu >/dev/null && killall -INT bemenu +pgrep bemenu >/dev/null && pkill -f bemenu # always source the config to make sure . "$HOME"/.config/bemenu.conf arg0=bemenu -prompt=${MENU_PROMPT:-} -args= +MENU_PROMPT=${MENU_PROMPT:-} idx=0 while test $# -gt $idx; do case "$1" in -run) arg0=bemenu-run - prompt="" + MENU_PROMPT="" shift ;; -drun) - # arg0=bemenu-drun - # prompt="" + arg0="j4-dmenu-desktop --dmenu=bemenu" + MENU_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" + MENU_PROMPT="$1" shift ;; -x) shift - MENU_PASSWORD=1 + BEMENU_OPTS="${BEMENU_OPTS} --password" ;; 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} "$@" +[ -n "${MENU_POPUP}" ] && + BEMENU_OPTS="${BEMENU_OPTS} --center --width-factor 0.5 --border 2 --list 8" # --fixed-height + +BEMENU_OPTS="${BEMENU_OPTS} --prompt ${MENU_PROMPT}" + +BEMENU_OPTS="${BEMENU_OPTS} $*" + +exec ${arg0} |