forked from speedie/spmenu
fix some bugs, add multisel for spmenu_run
This commit is contained in:
parent
e7ecfd4114
commit
5aefbf249a
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,33 +277,37 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
parse() {
|
parse() {
|
||||||
sout="$(path | sed "s/\&/\&/g" | $RUNLAUNCHER "${rl_run[@]}")"
|
path | sed "s/\&/\&/g" | $RUNLAUNCHER "${rl_run[@]}" > /tmp/spmenu_out
|
||||||
|
|
||||||
# parse
|
while read -r sout; do
|
||||||
case "${sout:0:1}" in
|
# parse
|
||||||
"#") EXEC="term" ;;
|
case "${sout:0:1}" in
|
||||||
"?") EXEC="man" ;;
|
"#") EXEC="term" ;;
|
||||||
esac
|
"?") 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
|
case "$(printf "%s" "$sout" | awk '{ print $1 }')" in
|
||||||
"magnet") EXEC=torrent ;;
|
"magnet") EXEC=torrent ;;
|
||||||
"www") EXEC=web ;;
|
"www") EXEC=web ;;
|
||||||
"?") ;;
|
"?") ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$sout" = "?" ]; then
|
if [ "$sout" = "?" ]; then
|
||||||
print_help "$@"
|
print_help "$@"
|
||||||
parse
|
parse
|
||||||
exec_cmd
|
exec_cmd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "Type: '%s'\n" "$EXEC" >> "$LOGFILE"
|
printf "Type: '%s'\n" "$EXEC" >> "$LOGFILE"
|
||||||
|
|
||||||
# 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,17 +619,19 @@ 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
|
||||||
|
|
||||||
[ "$menusel" = "?" ] && print_desktop_help && print_desktop_menu
|
while read -r menusel; do
|
||||||
command -v desktop_post_func > /dev/null && desktop_post_func "$menusel"
|
[ "$menusel" = "?" ] && print_desktop_help && print_desktop_menu
|
||||||
[ -z "$menusel" ] && return 1 \
|
command -v desktop_post_func > /dev/null && desktop_post_func "$menusel"
|
||||||
|| printf "User input: %s\n" "$menusel" >> "$LOGFILE"
|
[ -z "$menusel" ] && return 1 \
|
||||||
|
|| printf "User input: %s\n" "$menusel" >> "$LOGFILE"
|
||||||
|
|
||||||
# this must now be the title only
|
# this must now be the title only
|
||||||
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"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
# spmenu test script
|
# spmenu test script
|
||||||
|
|
||||||
PREFIX="${PREFIX:-/usr}"
|
PREFIX="${PREFIX:-/usr}"
|
||||||
|
|
Loading…
Reference in a new issue