merge lsx -> default
This commit is contained in:
		
							
								
								
									
										25
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								Makefile
									
									
									
									
									
								
							| @@ -3,10 +3,10 @@ | ||||
|  | ||||
| include config.mk | ||||
|  | ||||
| SRC = dmenu.c draw.c | ||||
| SRC = dmenu.c draw.c lsx.c | ||||
| OBJ = ${SRC:.c=.o} | ||||
|  | ||||
| all: options dmenu | ||||
| all: options dmenu lsx | ||||
|  | ||||
| options: | ||||
| 	@echo dmenu build options: | ||||
| @@ -20,9 +20,13 @@ options: | ||||
|  | ||||
| ${OBJ}: config.mk | ||||
|  | ||||
| dmenu: ${OBJ} | ||||
| dmenu: dmenu.o draw.o | ||||
| 	@echo CC -o $@ | ||||
| 	@${CC} -o $@ ${OBJ} ${LDFLAGS} | ||||
| 	@${CC} -o $@ dmenu.o draw.o ${LDFLAGS} | ||||
|  | ||||
| lsx: lsx.o | ||||
| 	@echo CC -o $@ | ||||
| 	@${CC} -o $@ lsx.o ${LDFLAGS} | ||||
|  | ||||
| clean: | ||||
| 	@echo cleaning | ||||
| @@ -31,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} | ||||
| @@ -39,21 +43,24 @@ dist: clean | ||||
| install: all | ||||
| 	@echo installing executables to ${DESTDIR}${PREFIX}/bin | ||||
| 	@mkdir -p ${DESTDIR}${PREFIX}/bin | ||||
| 	@cp -f dmenu dmenu_path dmenu_run ${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 | ||||
| 	@echo installing manual page to ${DESTDIR}${MANPREFIX}/man1 | ||||
| 	@chmod 755 ${DESTDIR}${PREFIX}/bin/lsx | ||||
| 	@echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1 | ||||
| 	@mkdir -p ${DESTDIR}${MANPREFIX}/man1 | ||||
| 	@sed "s/VERSION/${VERSION}/g" < dmenu.1 > ${DESTDIR}${MANPREFIX}/man1/dmenu.1 | ||||
| 	@sed "s/VERSION/${VERSION}/g" < lsx.1 > ${DESTDIR}${MANPREFIX}/man1/lsx.1 | ||||
| 	@chmod 644 ${DESTDIR}${MANPREFIX}/man1/dmenu.1 | ||||
| 	@chmod 644 ${DESTDIR}${MANPREFIX}/man1/lsx.1 | ||||
|  | ||||
| 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 | ||||
| 	@rm -f ${DESTDIR}${MANPREFIX}/man1/dmenu.1 | ||||
| 	@rm -f ${DESTDIR}${MANPREFIX}/man1/lsx.1 | ||||
|  | ||||
| .PHONY: all options clean dist install uninstall | ||||
|   | ||||
							
								
								
									
										12
									
								
								dmenu.1
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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,5 @@ 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), | ||||
| .IR lsx (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 | ||||
| 	find $PATH ! -type d \( -perm -1 -o -perm -10 -o -perm -100 \) | sed 's/.*\///' | 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 | ||||
|   | ||||
							
								
								
									
										11
									
								
								lsx.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								lsx.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| .TH LSX 1 dmenu\-VERSION | ||||
| .SH NAME | ||||
| lsx \- list executables | ||||
| .SH SYNOPSIS | ||||
| .B lsx | ||||
| .RI [ directory ...] | ||||
| .SH DESCRIPTION | ||||
| .B lsx | ||||
| lists the executables in each | ||||
| .IR directory . | ||||
| If none are given the current working directory is used. | ||||
							
								
								
									
										38
									
								
								lsx.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								lsx.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| /* See LICENSE file for copyright and license details. */ | ||||
| #include <dirent.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
| #include <sys/stat.h> | ||||
|  | ||||
| static void lsx(const char *dir); | ||||
|  | ||||
| int | ||||
| main(int argc, char *argv[]) { | ||||
| 	int i; | ||||
|  | ||||
| 	if(argc < 2) | ||||
| 		lsx("."); | ||||
| 	else for(i = 1; i < argc; i++) | ||||
| 		lsx(argv[i]); | ||||
| 	return EXIT_SUCCESS; | ||||
| } | ||||
|  | ||||
| void | ||||
| lsx(const char *dir) { | ||||
| 	char buf[PATH_MAX]; | ||||
| 	struct dirent *d; | ||||
| 	struct stat st; | ||||
| 	DIR *dp; | ||||
|  | ||||
| 	if(!(dp = opendir(dir))) { | ||||
| 		perror(dir); | ||||
| 		return; | ||||
| 	} | ||||
| 	while((d = readdir(dp))) | ||||
| 		if(snprintf(buf, sizeof buf, "%s/%s", dir, d->d_name) < sizeof buf | ||||
| 		&& !stat(buf, &st) && S_ISREG(st.st_mode) && access(buf, X_OK) == 0) | ||||
| 			puts(d->d_name); | ||||
| 	closedir(dp); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Connor Lane Smith
					Connor Lane Smith