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:
parent
9e9284666c
commit
ac25b07338
2 changed files with 37 additions and 0 deletions
|
@ -33,6 +33,8 @@ rt = cc.find_library('rt')
|
||||||
subdir('protocols')
|
subdir('protocols')
|
||||||
subdir('docs')
|
subdir('docs')
|
||||||
|
|
||||||
|
install_data('wmenu_run', install_dir: get_option('bindir'))
|
||||||
|
|
||||||
executable(
|
executable(
|
||||||
'wmenu',
|
'wmenu',
|
||||||
files(
|
files(
|
||||||
|
|
35
wmenu_run
Executable file
35
wmenu_run
Executable 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"} &
|
Loading…
Add table
Reference in a new issue