re-applied Neale's spawn patch, credited Neale in LICENSE
This commit is contained in:
		
							parent
							
								
									0b5dcf229f
								
							
						
					
					
						commit
						62a491e36d
					
				
							
								
								
									
										1
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								LICENSE
									
									
									
									
									
								
							| @ -9,6 +9,7 @@ MIT/X Consortium License | ||||
| © 2007-2008 Enno Gottox Boland <gottox at s01 dot de> | ||||
| © 2007-2008 Peter Hartlich <sgkkr at hartlich dot com> | ||||
| © 2008 Martin Hurton <martin dot hurton at gmail dot com> | ||||
| © 2008 Neale Pickett <neale dot woozle dot org> | ||||
| 
 | ||||
| Permission is hereby granted, free of charge, to any person obtaining a | ||||
| copy of this software and associated documentation files (the "Software"), | ||||
|  | ||||
							
								
								
									
										3
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								README
									
									
									
									
									
								
							| @ -38,11 +38,12 @@ the DISPLAY environment variable is set correctly, e.g.: | ||||
| In order to display status info in the bar, you can do something | ||||
| like this in your .xinitrc: | ||||
| 
 | ||||
|     dwm & | ||||
|     while true | ||||
|     do | ||||
|         xsetroot -name "`date` `uptime | sed 's/.*,//'`" | ||||
|         sleep 1 | ||||
|     done | dwm | ||||
|     done | ||||
| 
 | ||||
| 
 | ||||
| Configuration | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| # dwm version
 | ||||
| VERSION = 5.3.1 | ||||
| VERSION = 5.4 | ||||
| 
 | ||||
| # Customize below to fit your system
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										25
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								dwm.c
									
									
									
									
									
								
							| @ -178,6 +178,7 @@ static void setlayout(const Arg *arg); | ||||
| static void setmfact(const Arg *arg); | ||||
| static void setup(void); | ||||
| static void showhide(Client *c); | ||||
| static void sigchld(int signal); | ||||
| static void spawn(const Arg *arg); | ||||
| static void tag(const Arg *arg); | ||||
| static int textnw(const char *text, unsigned int len); | ||||
| @ -1340,22 +1341,24 @@ showhide(Client *c) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| void | ||||
| sigchld(int signal) { | ||||
| 	while(0 < waitpid(-1, NULL, WNOHANG)); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| spawn(const Arg *arg) { | ||||
| 	/* The double-fork construct avoids zombie processes and keeps the code
 | ||||
| 	 * clean from stupid signal handlers. */ | ||||
| 	signal(SIGCHLD, sigchld); | ||||
| 	if(fork() == 0) { | ||||
| 		if(fork() == 0) { | ||||
| 			if(dpy) | ||||
| 				close(ConnectionNumber(dpy)); | ||||
| 			setsid(); | ||||
| 			execvp(((char **)arg->v)[0], (char **)arg->v); | ||||
| 			fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); | ||||
| 			perror(" failed"); | ||||
| 		} | ||||
| 		if(dpy) | ||||
| 			close(ConnectionNumber(dpy)); | ||||
| 		setsid(); | ||||
| 		execvp(((char **)arg->v)[0], (char **)arg->v); | ||||
| 		fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); | ||||
| 		perror(" failed"); | ||||
| 		exit(0); | ||||
| 	} | ||||
| 	wait(0); | ||||
| } | ||||
| 
 | ||||
| void | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user