simplify dmenu_run
[dmenu.git] / dmenu_run
index 97e43ed..2747919 100755 (executable)
--- a/dmenu_run
+++ b/dmenu_run
@@ -1,2 +1,12 @@
 #!/bin/sh
-set exe=`dmenu_path | dmenu $*` && exec $exe
+CACHE=${XDG_CACHE_HOME:-"$HOME/.cache"}/dmenu_run
+if [ ! -d "`dirname "$CACHE"`" ]; then
+       CACHE=$HOME/.dmenu_cache
+fi
+(
+       IFS=:
+       if [ "`ls -dt $PATH "$CACHE" | head -n 1`" != "$CACHE" ]; then
+               lsx $PATH | sort -u > "$CACHE"
+       fi
+)
+cmd=`dmenu "$@" < "$CACHE"` && exec sh -c "$cmd"