From 2a9ae1480c67f3c3da8fb172d810fb5842861ba5 Mon Sep 17 00:00:00 2001 From: speedie Date: Tue, 16 May 2023 21:16:51 +0200 Subject: [PATCH] display number of selected items as well, run subshell in the background --- scripts/spmenu_run | 2 +- spmenu.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/scripts/spmenu_run b/scripts/spmenu_run index 9f5cfea..5b92bd3 100755 --- a/scripts/spmenu_run +++ b/scripts/spmenu_run @@ -608,7 +608,7 @@ exec_program() { # finally run the program if [ -n "$exec" ]; then - /bin/sh -c "$exec" + ${SHELL:-/bin/sh} -c "$exec" & else printf "No executable found. Try clearing cache." >> "$LOGFILE" fi diff --git a/spmenu.c b/spmenu.c index a12e801..0fe715f 100644 --- a/spmenu.c +++ b/spmenu.c @@ -313,7 +313,7 @@ void appenditem(struct item *item, struct item **list, struct item **last) { } void recalculatenumbers(void) { - unsigned int numer = 0, denom = 0; + unsigned int numer = 0, denom = 0, selected = 0; struct item *item; if (matchend) { numer++; @@ -327,7 +327,19 @@ void recalculatenumbers(void) { for (item = items; item && item->text; item++) denom++; - snprintf(numbers, NUMBERSBUFSIZE, "%d/%d", numer, denom); + for (int i = 0; i < sel_size; i++) { + if (sel_index[i] == -1) { + break; + } + + selected++; + } + + if (selected) { + snprintf(numbers, NUMBERSBUFSIZE, "%d/%d/%d", numer, denom, selected); + } else { + snprintf(numbers, NUMBERSBUFSIZE, "%d/%d", numer, denom); + } } void calcoffsets(void) {