dmenu_run: Split cache logic to dmenu_path again
This allows to run dmenu_path to update the cache using a packager manager hook system
This commit is contained in:
		
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							@@ -35,7 +35,7 @@ clean:
 | 
				
			|||||||
dist: clean
 | 
					dist: clean
 | 
				
			||||||
	@echo creating dist tarball
 | 
						@echo creating dist tarball
 | 
				
			||||||
	@mkdir -p dmenu-${VERSION}
 | 
						@mkdir -p dmenu-${VERSION}
 | 
				
			||||||
	@cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_run stest.1 ${SRC} dmenu-${VERSION}
 | 
						@cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_path dmenu_run stest.1 ${SRC} dmenu-${VERSION}
 | 
				
			||||||
	@tar -cf dmenu-${VERSION}.tar dmenu-${VERSION}
 | 
						@tar -cf dmenu-${VERSION}.tar dmenu-${VERSION}
 | 
				
			||||||
	@gzip dmenu-${VERSION}.tar
 | 
						@gzip dmenu-${VERSION}.tar
 | 
				
			||||||
	@rm -rf dmenu-${VERSION}
 | 
						@rm -rf dmenu-${VERSION}
 | 
				
			||||||
@@ -43,8 +43,9 @@ dist: clean
 | 
				
			|||||||
install: all
 | 
					install: all
 | 
				
			||||||
	@echo installing executables to ${DESTDIR}${PREFIX}/bin
 | 
						@echo installing executables to ${DESTDIR}${PREFIX}/bin
 | 
				
			||||||
	@mkdir -p ${DESTDIR}${PREFIX}/bin
 | 
						@mkdir -p ${DESTDIR}${PREFIX}/bin
 | 
				
			||||||
	@cp -f dmenu dmenu_run stest ${DESTDIR}${PREFIX}/bin
 | 
						@cp -f dmenu dmenu_path dmenu_run stest ${DESTDIR}${PREFIX}/bin
 | 
				
			||||||
	@chmod 755 ${DESTDIR}${PREFIX}/bin/dmenu
 | 
						@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/dmenu_run
 | 
				
			||||||
	@chmod 755 ${DESTDIR}${PREFIX}/bin/stest
 | 
						@chmod 755 ${DESTDIR}${PREFIX}/bin/stest
 | 
				
			||||||
	@echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1
 | 
						@echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1
 | 
				
			||||||
@@ -57,6 +58,7 @@ install: all
 | 
				
			|||||||
uninstall:
 | 
					uninstall:
 | 
				
			||||||
	@echo removing executables from ${DESTDIR}${PREFIX}/bin
 | 
						@echo removing executables from ${DESTDIR}${PREFIX}/bin
 | 
				
			||||||
	@rm -f ${DESTDIR}${PREFIX}/bin/dmenu
 | 
						@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/dmenu_run
 | 
				
			||||||
	@rm -f ${DESTDIR}${PREFIX}/bin/stest
 | 
						@rm -f ${DESTDIR}${PREFIX}/bin/stest
 | 
				
			||||||
	@echo removing manual page from ${DESTDIR}${MANPREFIX}/man1
 | 
						@echo removing manual page from ${DESTDIR}${MANPREFIX}/man1
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								dmenu_path
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								dmenu_path
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
 | 
				
			||||||
 | 
					if [ -d "$cachedir" ]; then
 | 
				
			||||||
 | 
						cache=$cachedir/dmenu_run
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					IFS=:
 | 
				
			||||||
 | 
					if stest -dqr -n "$cache" $PATH; then
 | 
				
			||||||
 | 
						stest -flx $PATH | sort -u | tee "$cache"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						cat "$cache"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										15
									
								
								dmenu_run
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								dmenu_run
									
									
									
									
									
								
							@@ -1,15 +1,2 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
 | 
					dmenu_path | dmenu "$@" | ${SHELL:-"/bin/sh"} &
 | 
				
			||||||
if [ -d "$cachedir" ]; then
 | 
					 | 
				
			||||||
	cache=$cachedir/dmenu_run
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
	cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
(
 | 
					 | 
				
			||||||
	IFS=:
 | 
					 | 
				
			||||||
	if stest -dqr -n "$cache" $PATH; then
 | 
					 | 
				
			||||||
		stest -flx $PATH | sort -u | tee "$cache" | dmenu "$@"
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		dmenu "$@" < "$cache"
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
) | ${SHELL:-"/bin/sh"} &
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user