diff options
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | dmenu.1 | 11 | ||||
-rwxr-xr-x | dmenu_path | 9 | ||||
-rwxr-xr-x | dmenu_run | 9 | ||||
-rw-r--r-- | lsx.c | 6 |
5 files changed, 15 insertions, 26 deletions
@@ -35,7 +35,7 @@ clean: | |||
35 | dist: clean | 35 | dist: clean |
36 | @echo creating dist tarball | 36 | @echo creating dist tarball |
37 | @mkdir -p dmenu-${VERSION} | 37 | @mkdir -p dmenu-${VERSION} |
38 | @cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_path dmenu_run ${SRC} dmenu-${VERSION} | 38 | @cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_run ${SRC} dmenu-${VERSION} |
39 | @tar -cf dmenu-${VERSION}.tar dmenu-${VERSION} | 39 | @tar -cf dmenu-${VERSION}.tar dmenu-${VERSION} |
40 | @gzip dmenu-${VERSION}.tar | 40 | @gzip dmenu-${VERSION}.tar |
41 | @rm -rf dmenu-${VERSION} | 41 | @rm -rf dmenu-${VERSION} |
@@ -43,9 +43,8 @@ dist: clean | |||
43 | install: all | 43 | install: all |
44 | @echo installing executables to ${DESTDIR}${PREFIX}/bin | 44 | @echo installing executables to ${DESTDIR}${PREFIX}/bin |
45 | @mkdir -p ${DESTDIR}${PREFIX}/bin | 45 | @mkdir -p ${DESTDIR}${PREFIX}/bin |
46 | @cp -f dmenu dmenu_path dmenu_run lsx ${DESTDIR}${PREFIX}/bin | 46 | @cp -f dmenu dmenu_run lsx ${DESTDIR}${PREFIX}/bin |
47 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu | 47 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu |
48 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_path | ||
49 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_run | 48 | @chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_run |
50 | @chmod 755 ${DESTDIR}${PREFIX}/bin/lsx | 49 | @chmod 755 ${DESTDIR}${PREFIX}/bin/lsx |
51 | @echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1 | 50 | @echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1 |
@@ -58,7 +57,6 @@ install: all | |||
58 | uninstall: | 57 | uninstall: |
59 | @echo removing executables from ${DESTDIR}${PREFIX}/bin | 58 | @echo removing executables from ${DESTDIR}${PREFIX}/bin |
60 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu | 59 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu |
61 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_path | ||
62 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_run | 60 | @rm -f ${DESTDIR}${PREFIX}/bin/dmenu_run |
63 | @rm -f ${DESTDIR}${PREFIX}/bin/lsx | 61 | @rm -f ${DESTDIR}${PREFIX}/bin/lsx |
64 | @echo removing manual page from ${DESTDIR}${MANPREFIX}/man1 | 62 | @echo removing manual page from ${DESTDIR}${MANPREFIX}/man1 |
@@ -23,12 +23,10 @@ dmenu \- dynamic menu | |||
23 | .RB [ \-v ] | 23 | .RB [ \-v ] |
24 | .P | 24 | .P |
25 | .BR dmenu_run " ..." | 25 | .BR dmenu_run " ..." |
26 | .P | ||
27 | .B dmenu_path | ||
28 | .SH DESCRIPTION | 26 | .SH DESCRIPTION |
29 | .B dmenu | 27 | .B dmenu |
30 | is a dynamic menu for X, originally designed for | 28 | is a dynamic menu for X, originally designed for |
31 | .BR dwm (1). | 29 | .IR dwm (1). |
32 | It manages huge numbers of user\-defined menu items efficiently. | 30 | It manages huge numbers of user\-defined menu items efficiently. |
33 | .P | 31 | .P |
34 | dmenu reads a list of newline\-separated items from stdin and creates a menu. | 32 | dmenu reads a list of newline\-separated items from stdin and creates a menu. |
@@ -36,11 +34,8 @@ When the user selects an item or enters any text and presses Return, their | |||
36 | choice is printed to stdout and dmenu terminates. | 34 | choice is printed to stdout and dmenu terminates. |
37 | .P | 35 | .P |
38 | .B dmenu_run | 36 | .B dmenu_run |
39 | is a dmenu script used by dwm which lists programs in the user's PATH and | 37 | is a dmenu script used by dwm which lists programs in the user's $PATH and |
40 | executes the selected item. | 38 | executes the selected item. |
41 | .P | ||
42 | .B dmenu_path | ||
43 | is a script used by dmenu_run to find and cache a list of executables. | ||
44 | .SH OPTIONS | 39 | .SH OPTIONS |
45 | .TP | 40 | .TP |
46 | .B \-b | 41 | .B \-b |
@@ -100,4 +95,4 @@ Exit without selecting an item, returning failure. | |||
100 | .B Ctrl\-y | 95 | .B Ctrl\-y |
101 | Paste the current X selection into the input field. | 96 | Paste the current X selection into the input field. |
102 | .SH SEE ALSO | 97 | .SH SEE ALSO |
103 | .BR dwm (1) | 98 | .IR dwm (1) |
diff --git a/dmenu_path b/dmenu_path deleted file mode 100755 index 81df5ed..0000000 --- a/dmenu_path +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | CACHE=$HOME/.dmenu_cache | ||
3 | IFS=: | ||
4 | |||
5 | if ! test -f "$CACHE" || find $PATH -type d -newer "$CACHE" | grep -q .; then | ||
6 | lsx $PATH | sort -u > "$CACHE" | ||
7 | fi | ||
8 | |||
9 | cat "$CACHE" | ||
@@ -1,2 +1,9 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | exe=`dmenu_path | dmenu ${1+"$@"}` && exec $exe | 2 | CACHE=${XDG_CACHE_HOME:-"$HOME/.cache"}/dmenu_run |
3 | ( | ||
4 | IFS=: | ||
5 | if test "`ls -dt $PATH "$CACHE" 2> /dev/null | sed 1q`" != "$CACHE"; then | ||
6 | mkdir -p "`dirname "$CACHE"`" && lsx $PATH | sort -u > "$CACHE" | ||
7 | fi | ||
8 | ) | ||
9 | cmd=`dmenu "$@" < "$CACHE"` && exec $cmd | ||
@@ -6,7 +6,7 @@ | |||
6 | #include <unistd.h> | 6 | #include <unistd.h> |
7 | #include <sys/stat.h> | 7 | #include <sys/stat.h> |
8 | 8 | ||
9 | static void lsx(const char *s); | 9 | static void lsx(const char *dir); |
10 | 10 | ||
11 | int | 11 | int |
12 | main(int argc, char *argv[]) { | 12 | main(int argc, char *argv[]) { |
@@ -34,9 +34,7 @@ lsx(const char *dir) { | |||
34 | } | 34 | } |
35 | while((d = readdir(dp))) { | 35 | while((d = readdir(dp))) { |
36 | snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); | 36 | snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); |
37 | if(stat(buf, &st) == -1) | 37 | if(stat(buf, &st) == 0 && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) |
38 | perror(buf); | ||
39 | else if(S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | ||
40 | puts(d->d_name); | 38 | puts(d->d_name); |
41 | } | 39 | } |
42 | closedir(dp); | 40 | closedir(dp); |