replace lsx with stest
[dmenu.git] / dmenu_run
index 3e1e6e4..a15df0f 100755 (executable)
--- a/dmenu_run
+++ b/dmenu_run
@@ -1,2 +1,14 @@
 #!/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 ls -d $PATH | stest -q -n "$CACHE"; then
+               for dir in $PATH; do
+                       ls $dir | stest -C $dir -fx
+               done | sort -u > "$CACHE"
+       fi
+)
+cmd=`dmenu "$@" < "$CACHE"` && exec sh -c "$cmd"