new dmenu_run
							parent
							
								
									8ec1b41cac
								
							
						
					
					
						commit
						eadf090413
					
				
							
								
								
									
										6
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										6
									
								
								Makefile
								
								
								
								
							|  | @ -35,7 +35,7 @@ clean: | |||
| dist: clean | ||||
| 	@echo creating dist tarball | ||||
| 	@mkdir -p dmenu-${VERSION} | ||||
| 	@cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_path dmenu_run ${SRC} dmenu-${VERSION} | ||||
| 	@cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_run ${SRC} dmenu-${VERSION} | ||||
| 	@tar -cf dmenu-${VERSION}.tar dmenu-${VERSION} | ||||
| 	@gzip dmenu-${VERSION}.tar | ||||
| 	@rm -rf dmenu-${VERSION} | ||||
|  | @ -43,9 +43,8 @@ dist: clean | |||
| install: all | ||||
| 	@echo installing executables to ${DESTDIR}${PREFIX}/bin | ||||
| 	@mkdir -p ${DESTDIR}${PREFIX}/bin | ||||
| 	@cp -f dmenu dmenu_path dmenu_run lsx ${DESTDIR}${PREFIX}/bin | ||||
| 	@cp -f dmenu dmenu_run lsx ${DESTDIR}${PREFIX}/bin | ||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu | ||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_path | ||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu_run | ||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/lsx | ||||
| 	@echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1 | ||||
|  | @ -58,7 +57,6 @@ install: all | |||
| uninstall: | ||||
| 	@echo removing executables from ${DESTDIR}${PREFIX}/bin | ||||
| 	@rm -f ${DESTDIR}${PREFIX}/bin/dmenu | ||||
| 	@rm -f ${DESTDIR}${PREFIX}/bin/dmenu_path | ||||
| 	@rm -f ${DESTDIR}${PREFIX}/bin/dmenu_run | ||||
| 	@rm -f ${DESTDIR}${PREFIX}/bin/lsx | ||||
| 	@echo removing manual page from ${DESTDIR}${MANPREFIX}/man1 | ||||
|  |  | |||
							
								
								
									
										11
									
								
								dmenu.1
								
								
								
								
							
							
						
						
									
										11
									
								
								dmenu.1
								
								
								
								
							|  | @ -23,12 +23,10 @@ dmenu \- dynamic menu | |||
| .RB [ \-v ] | ||||
| .P | ||||
| .BR dmenu_run " ..." | ||||
| .P | ||||
| .B dmenu_path | ||||
| .SH DESCRIPTION | ||||
| .B dmenu | ||||
| is a dynamic menu for X, originally designed for | ||||
| .BR dwm (1). | ||||
| .IR dwm (1). | ||||
| It manages huge numbers of user\-defined menu items efficiently. | ||||
| .P | ||||
| 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 | |||
| choice is printed to stdout and dmenu terminates. | ||||
| .P | ||||
| .B dmenu_run | ||||
| is a dmenu script used by dwm which lists programs in the user's PATH and | ||||
| is a dmenu script used by dwm which lists programs in the user's $PATH and | ||||
| executes the selected item. | ||||
| .P | ||||
| .B dmenu_path | ||||
| is a script used by dmenu_run to find and cache a list of executables. | ||||
| .SH OPTIONS | ||||
| .TP | ||||
| .B \-b | ||||
|  | @ -100,4 +95,4 @@ Exit without selecting an item, returning failure. | |||
| .B Ctrl\-y | ||||
| Paste the current X selection into the input field. | ||||
| .SH SEE ALSO | ||||
| .BR dwm (1) | ||||
| .IR dwm (1) | ||||
|  |  | |||
|  | @ -1,9 +0,0 @@ | |||
| #!/bin/sh | ||||
| CACHE=$HOME/.dmenu_cache | ||||
| IFS=: | ||||
| 
 | ||||
| if ! test -f "$CACHE" || find $PATH -type d -newer "$CACHE" | grep -q .; then | ||||
| 	lsx $PATH | sort -u > "$CACHE" | ||||
| fi | ||||
| 
 | ||||
| cat "$CACHE" | ||||
|  | @ -1,2 +1,9 @@ | |||
| #!/bin/sh | ||||
| exe=`dmenu_path | dmenu ${1+"$@"}` && exec $exe | ||||
| CACHE=${XDG_CACHE_HOME:-"$HOME/.cache"}/dmenu_run | ||||
| ( | ||||
| 	IFS=: | ||||
| 	if test "`ls -dt $PATH "$CACHE" 2> /dev/null | sed 1q`" != "$CACHE"; then | ||||
| 		mkdir -p "`dirname "$CACHE"`" && lsx $PATH | sort -u > "$CACHE" | ||||
| 	fi | ||||
| ) | ||||
| cmd=`dmenu "$@" < "$CACHE"` && exec $cmd | ||||
|  |  | |||
							
								
								
									
										6
									
								
								lsx.c
								
								
								
								
							
							
						
						
									
										6
									
								
								lsx.c
								
								
								
								
							|  | @ -6,7 +6,7 @@ | |||
| #include <unistd.h> | ||||
| #include <sys/stat.h> | ||||
| 
 | ||||
| static void lsx(const char *s); | ||||
| static void lsx(const char *dir); | ||||
| 
 | ||||
| int | ||||
| main(int argc, char *argv[]) { | ||||
|  | @ -34,9 +34,7 @@ lsx(const char *dir) { | |||
| 	} | ||||
| 	while((d = readdir(dp))) { | ||||
| 		snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name); | ||||
| 		if(stat(buf, &st) == -1) | ||||
| 			perror(buf); | ||||
| 		else if(S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | ||||
| 		if(stat(buf, &st) == 0 && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | ||||
| 			puts(d->d_name); | ||||
| 	} | ||||
| 	closedir(dp); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue