summaryrefslogtreecommitdiff
path: root/dmenu/dmenu_path
diff options
context:
space:
mode:
Diffstat (limited to 'dmenu/dmenu_path')
-rwxr-xr-xdmenu/dmenu_path21
1 files changed, 11 insertions, 10 deletions
diff --git a/dmenu/dmenu_path b/dmenu/dmenu_path
index 9b3b1f2..9e7c801 100755
--- a/dmenu/dmenu_path
+++ b/dmenu/dmenu_path
@@ -1,12 +1,13 @@
#!/bin/sh
-#
-# dmenu_path: Override dmenu_path sorting results by atime.
-#
-# By default, dmenu_path sorts executables alphabetically. It seems to make
-# more sense to sort them by atime in an effort to reduce the number of
-# keystrokes needed to start a program.
-echo $PATH | tr ':' '\n' | uniq | sed 's#$#/#' | # List directories in $PATH
- xargs ls -lu --time-style=+%s | # Add atime epoch
- awk '/^(-|l)/ { print $6, $7 }' | # Only print timestamp and name
- sort -rn | cut -d' ' -f 2
+cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
+cache="$cachedir/dmenu_run"
+
+[ ! -e "$cachedir" ] && mkdir -p "$cachedir"
+
+IFS=:
+if stest -dqr -n "$cache" $PATH; then
+ stest -flx $PATH | sort -u | tee "$cache"
+else
+ cat "$cache"
+fi