fix some bugs, add multisel for spmenu_run

This commit is contained in:
speedie 2023-05-16 20:03:52 +02:00
parent e7ecfd4114
commit 5aefbf249a
4 changed files with 40 additions and 32 deletions

View file

@ -281,7 +281,6 @@ void selectitem(Arg *arg) {
for (int i = 0; i < sel_size; i++) { for (int i = 0; i < sel_size; i++) {
if (sel_index[i] != -1 && (!sel || sel->index != sel_index[i])) { if (sel_index[i] != -1 && (!sel || sel->index != sel_index[i])) {
puts(items[sel_index[i]].text); puts(items[sel_index[i]].text);
savehistory(items[sel_index[i]].text);
} }
} }

View file

@ -165,6 +165,10 @@ int drawitemtext(struct item *item, int x, int y, int w) {
memcpy(scm, scheme[SchemeItemNormPri], sizeof(scm)); memcpy(scm, scheme[SchemeItemNormPri], sizeof(scm));
} }
if (is_selected(item->index)) {
memcpy(scm, scheme[SchemeItemSel], sizeof(scm));
}
// don't color // don't color
if (!coloritems) memcpy(scm, scheme[SchemeItemNorm1], sizeof(scm)); if (!coloritems) memcpy(scm, scheme[SchemeItemNorm1], sizeof(scm));
} }

View file

@ -277,8 +277,9 @@ EOF
} }
parse() { parse() {
sout="$(path | sed "s/\&/\&amp;/g" | $RUNLAUNCHER "${rl_run[@]}")" path | sed "s/\&/\&amp;/g" | $RUNLAUNCHER "${rl_run[@]}" > /tmp/spmenu_out
while read -r sout; do
# parse # parse
case "${sout:0:1}" in case "${sout:0:1}" in
"#") EXEC="term" ;; "#") EXEC="term" ;;
@ -304,6 +305,9 @@ parse() {
# check for keywords # check for keywords
printf "%s" "$sout" | grep -qE "$WEB_GREP" && EXEC=web printf "%s" "$sout" | grep -qE "$WEB_GREP" && EXEC=web
printf "%s" "$sout" | grep -qE "$MAGNET_GREP" && EXEC=torrent printf "%s" "$sout" | grep -qE "$MAGNET_GREP" && EXEC=torrent
exec_cmd "$args"
done < /tmp/spmenu_out
} }
exec_cmd() { exec_cmd() {
@ -615,8 +619,9 @@ print_desktop_menu() {
HIDDEN_ENTRY_KEYWORDS="${HIDDEN_ENTRY_KEYWORDS:-NULL_ENTRY}" HIDDEN_ENTRY_KEYWORDS="${HIDDEN_ENTRY_KEYWORDS:-NULL_ENTRY}"
menusel="$(print_desktop_list | uniq "${uniq_args[@]}" | sort "${sort_args[@]}" | grep -vE "$HIDDEN_ENTRY_KEYWORDS" | grep -E "$ENTRY_KEYWORDS" | $RUNLAUNCHER "${rl_desktop[@]}")" print_desktop_list | uniq "${uniq_args[@]}" | sort "${sort_args[@]}" | grep -vE "$HIDDEN_ENTRY_KEYWORDS" | grep -E "$ENTRY_KEYWORDS" | $RUNLAUNCHER "${rl_desktop[@]}" > /tmp/spmenu_out
while read -r menusel; do
[ "$menusel" = "?" ] && print_desktop_help && print_desktop_menu [ "$menusel" = "?" ] && print_desktop_help && print_desktop_menu
command -v desktop_post_func > /dev/null && desktop_post_func "$menusel" command -v desktop_post_func > /dev/null && desktop_post_func "$menusel"
[ -z "$menusel" ] && return 1 \ [ -z "$menusel" ] && return 1 \
@ -626,6 +631,7 @@ print_desktop_menu() {
menusel="$(printf "%s" "$menusel" | sed "s/ -.*//")" menusel="$(printf "%s" "$menusel" | sed "s/ -.*//")"
exec_program "$@" exec_program "$@"
done < /tmp/spmenu_out; rm -f /tmp/spmenu_out
} }
prep_desktop() { prep_desktop() {
@ -740,7 +746,6 @@ main() {
case "$function" in case "$function" in
"run") "run")
parse "$args" parse "$args"
exec_cmd "$args"
;; ;;
"fm") prepare_dirnav "$args" "fm") prepare_dirnav "$args"
;; ;;

View file

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# spmenu test script # spmenu test script
PREFIX="${PREFIX:-/usr}" PREFIX="${PREFIX:-/usr}"