add wmenu_run script, similar to dmenu_run script

based off the works of sinanmohd, modified to be simpler and better
to read, with shellcheck.

Co-authored-by: sinanmohd <sinan@firemail.cc>
This commit is contained in:
sewn 2024-03-10 18:07:46 +03:00 committed by adnano
parent 9e9284666c
commit ac25b07338
2 changed files with 37 additions and 0 deletions

View file

@ -33,6 +33,8 @@ rt = cc.find_library('rt')
subdir('protocols')
subdir('docs')
install_data('wmenu_run', install_dir: get_option('bindir'))
executable(
'wmenu',
files(

35
wmenu_run Executable file
View file

@ -0,0 +1,35 @@
#!/bin/sh
cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
cache="$cachedir/wmenu_run"
[ -d "$cachedir" ] || mkdir -p "$cachedir"
uptodate() {
[ -f "$cache" ] || return 1
IFS=:
for path in $PATH; do
# non-POSIX
test "$path" -nt "$cache" && return 1
done
return 0
}
bins() {
IFS=:
for path in $PATH; do
for bin in "$path"/*; do
[ -x "$bin" ] && echo "${bin##*/}"
done
done
}
path() {
if uptodate; then
cat "$cache"
else
bins | sort -u | tee "$cache"
fi
}
path | wmenu "$@" | ${SHELL:-"/bin/sh"} &