From 1343a0e1b159e56d4f3dd3172f6ae904ac2489ee Mon Sep 17 00:00:00 2001 From: speedie Date: Wed, 8 Mar 2023 13:56:18 +0100 Subject: [PATCH] add some nice functionality to spmenu_run --- scripts/spmenu_run | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/scripts/spmenu_run b/scripts/spmenu_run index 2bdc72c..8154888 100755 --- a/scripts/spmenu_run +++ b/scripts/spmenu_run @@ -1,22 +1,32 @@ #!/bin/sh +[ ! -f "$HOME/.config/spmenu/spmenu_run.conf" ] && \ + mkdir -p "$HOME/.config/spmenu/spmenu_run.conf" && \ + touch "$HOME/.config/spmenu/spmenu_run.conf" || \ + . "$HOME/.config/spmenu/spmenu_run.conf" -# get path -PATH() { - echo "$PATH" | tr ':' '\n' | uniq | sed 's#$#/#' | # List directories in $PATH - xargs ls -lu --time-style=+%s | # Add atime epoch - awk '/^(-|l)/ { print $6, $7 }' | # Only print timestamp and name - sort -rn | cut -d' ' -f 2 +[ -z "$TERMINAL" ] && TERMINAL="st -e" +[ -z "$BROWSER" ] && BROWSER="xdg-open" +[ -z "$TORRENT" ] && TORRENT="qbittorrent" +[ -z "$HISTFILE" ] && HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache/}/spmenu_run.hist" + +path() { echo "$PATH" | tr ':' '\n' | uniq | sed 's#$#/#' | xargs ls -lu --time-style=+%s 2>&1 | awk '/^(-|l)/ { print $6, $7 }' | sort -rn | cut -d' ' -f 2 2>&1; } + +# run spmenu and parse it +parse() { + dout="$(path | sed "s/\&/\&/g" | spmenu -im -H "$HISTFILE" "$@")" + + [ "$(printf '%c' "$dout")" = "#" ] && RUN_ARG="$TERMINAL" + [ "$(printf "$dout" | awk '{ print $1 }')" = "magnet" ] && "$TORRENT" "$(printf "$dout" | sed "s/magnet //")" && return + [ "$(printf "$dout" | awk '{ print $1 }')" = "www" ] && "$BROWSER" "$(printf "$dout" | sed "s/www //")" && return + + # terminal + [ "$RUN_ARG" != "$TERMINAL" ] && printf "%s" "$dout" | sed "s/#//g" | ${SHELL:-"/bin/sh"} & return + [ "$RUN_ARG" = "$TERMINAL" ] && $TERMINAL -e "$(printf "%s" "$dout" | sed "s/#//g")"; return } -# Run spmenu and parse it -PARSE() { - DOUT="$(PATH | spmenu -im -H "${XDG_CACHE_HOME:-$HOME/.cache/}/spmenu_run.hist" "$@")" - - [ "$(printf '%c' "$DOUT")" = "#" ] && RUN_ARG="$TERMINAL" || RUN_ARG="$SHELL" - [ "$RUN_ARG" != "$TERMINAL" ] && printf "%s" "$DOUT" | sed "s/#//g" | ${SHELL:-"/bin/sh"} & - [ "$RUN_ARG" = "$TERMINAL" ] && $TERMINAL -e "$(printf "%s" "$DOUT" | sed "s/#//g")" +main() { + parse "$@" + rm -f "$HOME/.cache/spmenu_run" } -PARSE "$@" - -rm -f "$HOME/.cache/spmenu_run" +main "$@"