diff --git a/libs/arg.c b/libs/arg.c index e8fc1a8..2bbb6e2 100644 --- a/libs/arg.c +++ b/libs/arg.c @@ -281,7 +281,6 @@ void selectitem(Arg *arg) { for (int i = 0; i < sel_size; i++) { if (sel_index[i] != -1 && (!sel || sel->index != sel_index[i])) { puts(items[sel_index[i]].text); - savehistory(items[sel_index[i]].text); } } diff --git a/libs/draw.c b/libs/draw.c index b13d096..4d5dba3 100644 --- a/libs/draw.c +++ b/libs/draw.c @@ -165,6 +165,10 @@ int drawitemtext(struct item *item, int x, int y, int w) { memcpy(scm, scheme[SchemeItemNormPri], sizeof(scm)); } + if (is_selected(item->index)) { + memcpy(scm, scheme[SchemeItemSel], sizeof(scm)); + } + // don't color if (!coloritems) memcpy(scm, scheme[SchemeItemNorm1], sizeof(scm)); } diff --git a/scripts/spmenu_run b/scripts/spmenu_run index cb1c27c..8422874 100755 --- a/scripts/spmenu_run +++ b/scripts/spmenu_run @@ -277,33 +277,37 @@ EOF } parse() { - sout="$(path | sed "s/\&/\&/g" | $RUNLAUNCHER "${rl_run[@]}")" + path | sed "s/\&/\&/g" | $RUNLAUNCHER "${rl_run[@]}" > /tmp/spmenu_out - # parse - case "${sout:0:1}" in - "#") EXEC="term" ;; - "?") EXEC="man" ;; - esac + while read -r sout; do + # parse + case "${sout:0:1}" in + "#") EXEC="term" ;; + "?") EXEC="man" ;; + esac - printf "Run launcher output: '%s'\n" "$sout" >> "$LOGFILE" + printf "Run launcher output: '%s'\n" "$sout" >> "$LOGFILE" - case "$(printf "%s" "$sout" | awk '{ print $1 }')" in - "magnet") EXEC=torrent ;; - "www") EXEC=web ;; - "?") ;; - esac + case "$(printf "%s" "$sout" | awk '{ print $1 }')" in + "magnet") EXEC=torrent ;; + "www") EXEC=web ;; + "?") ;; + esac - if [ "$sout" = "?" ]; then - print_help "$@" - parse - exec_cmd - fi + if [ "$sout" = "?" ]; then + print_help "$@" + parse + exec_cmd + fi - printf "Type: '%s'\n" "$EXEC" >> "$LOGFILE" + printf "Type: '%s'\n" "$EXEC" >> "$LOGFILE" - # check for keywords - printf "%s" "$sout" | grep -qE "$WEB_GREP" && EXEC=web - printf "%s" "$sout" | grep -qE "$MAGNET_GREP" && EXEC=torrent + # check for keywords + printf "%s" "$sout" | grep -qE "$WEB_GREP" && EXEC=web + printf "%s" "$sout" | grep -qE "$MAGNET_GREP" && EXEC=torrent + + exec_cmd "$args" + done < /tmp/spmenu_out } exec_cmd() { @@ -615,17 +619,19 @@ print_desktop_menu() { 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 - [ "$menusel" = "?" ] && print_desktop_help && print_desktop_menu - command -v desktop_post_func > /dev/null && desktop_post_func "$menusel" - [ -z "$menusel" ] && return 1 \ - || printf "User input: %s\n" "$menusel" >> "$LOGFILE" + while read -r menusel; do + [ "$menusel" = "?" ] && print_desktop_help && print_desktop_menu + command -v desktop_post_func > /dev/null && desktop_post_func "$menusel" + [ -z "$menusel" ] && return 1 \ + || printf "User input: %s\n" "$menusel" >> "$LOGFILE" - # this must now be the title only - menusel="$(printf "%s" "$menusel" | sed "s/ -.*//")" + # this must now be the title only + menusel="$(printf "%s" "$menusel" | sed "s/ -.*//")" - exec_program "$@" + exec_program "$@" + done < /tmp/spmenu_out; rm -f /tmp/spmenu_out } prep_desktop() { @@ -740,7 +746,6 @@ main() { case "$function" in "run") parse "$args" - exec_cmd "$args" ;; "fm") prepare_dirnav "$args" ;; diff --git a/scripts/spmenu_test b/scripts/spmenu_test index 5685142..91807e8 100755 --- a/scripts/spmenu_test +++ b/scripts/spmenu_test @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # spmenu test script PREFIX="${PREFIX:-/usr}"