faster dmenu_run -f
a02a1a66
2 file(s) · +11 −8
| 117 | 117 | setup(); |
|
| 118 | 118 | run(); |
|
| 119 | 119 | ||
| 120 | - | return EXIT_FAILURE; /* unreachable */ |
|
| 120 | + | return 1; /* unreachable */ |
|
| 121 | 121 | } |
|
| 122 | 122 | ||
| 123 | 123 | void |
| 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" |