#!/bin/bash rl_full="$(cat "$HOME/.config/bemenu/"*.runlist)" rl="$(echo "$rl_full" | cut -d' ' -f2-)" inp="$(echo "$rl" | bemenu --prompt ">")" [ -z "$inp" ] && exit 0 eval "inp_arr=($inp)" exectr=float-sh-keep while IFS= read -r line; do if [[ "$inp" == "$line"* ]]; then exectr="$(echo "$rl_full" | grep -F "$line" -m 1 | cut -d' ' -f1)" fi done <<< "$rl" case "$exectr" in exec) exec $inp;; float-sh) exec alacritty msg create-window --class="term_float" --working-directory="$HOME" --command "$SHELL" -c "($inp)";; float-sh-keep) exec alacritty msg create-window --class="term_float" --working-directory="$HOME" --command "($inp); read -n1";; *) exec bash "$HOME/.local/bin/bemenu/run-$exectr.sh" "${inp_arr[@]}" esac