faster dmenu_run -f a02a1a66
Connor Lane Smith · 2011-11-19 21:24 2 file(s) · +11 −8
dmenu.c +1 −1
117 117
	setup();
118 118
	run();
119 119
120 -
	return EXIT_FAILURE; /* unreachable */
120 +
	return 1; /* unreachable */
121 121
}
122 122
123 123
void
dmenu_run +10 −7
1 1
#!/bin/sh
2 -
CACHE=${XDG_CACHE_HOME:-"$HOME/.cache"}/dmenu_run
3 -
if [ ! -d "`dirname "$CACHE"`" ]; then
4 -
	CACHE=$HOME/.dmenu_cache
2 +
cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
3 +
if [ -d "$cachedir" ]; then
4 +
	cache=$cachedir/dmenu_run
5 +
else
6 +
	cache=$HOME/.dmenu_cache
5 7
fi
6 8
(
7 9
	IFS=:
8 -
	if [ "`ls -dt $PATH "$CACHE" | head -n 1`" != "$CACHE" ]; then
9 -
		lsx $PATH | sort -u > "$CACHE"
10 +
	if [ "`ls -dt $PATH "$cache" | head -n 1`" != "$cache" ]; then
11 +
		lsx $PATH | sort -u | tee "$cache" | dmenu "$@"
12 +
	else
13 +
		dmenu "$@" < "$cache"
10 14
	fi
11 -
)
12 -
cmd=`dmenu "$@" < "$CACHE"` && exec sh -c "$cmd"
15 +
) | read cmd && exec sh -c "$cmd"