simplify stest
[dmenu.git] / dmenu_run
index 3e1e6e4..e0a3e13 100755 (executable)
--- a/dmenu_run
+++ b/dmenu_run
@@ -1,2 +1,12 @@
 #!/bin/sh
-exe=`dmenu_path | dmenu ${1+"$@"}` && exec $exe
+CACHE=${XDG_CACHE_HOME:-"$HOME/.cache"}/dmenu_run
+if [ ! -d "`dirname "$CACHE"`" ]; then
+       CACHE=$HOME/.dmenu_cache
+fi
+(
+       IFS=:
+       if stest -dqr -n "$CACHE" $PATH; then
+               stest -flx $PATH | sort -u > "$CACHE"
+       fi
+)
+cmd=`dmenu "$@" < "$CACHE"` && exec sh -c "$cmd"