forked from speedie/spmenu
add some nice functionality to spmenu_run
This commit is contained in:
parent
1fe9890e4e
commit
1343a0e1b1
|
@ -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 "$@"
|
||||
|
|
Loading…
Reference in a new issue