| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -197,7 +197,7 @@ typedef struct { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Colormap cmap; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Window win; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XdbeBackBuffer buf; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Atom xembed; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Atom xembed, wmdeletewin; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XIM xim; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XIC xic; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XftDraw *xft_draw; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -850,12 +850,15 @@ execsh(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					sigchld(int a) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int stat = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(waitpid(pid, &stat, 0) < 0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							die("Waiting for pid %hd failed: %s\n",	pid, SERRNO); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(WIFEXITED(stat)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(WIFEXITED(stat)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							exit(WEXITSTATUS(stat)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							exit(EXIT_FAILURE); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -2173,6 +2176,8 @@ xinit(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							&(XColor){.red = 0x0000, .green = 0x0000, .blue = 0x0000}); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						xresettitle(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XMapWindow(xw.dpy, xw.win); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -2475,6 +2480,10 @@ cmessage(XEvent *e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} else if(e->xclient.data.l[1] == XEMBED_FOCUS_OUT) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								xw.state &= ~WIN_FOCUSED; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} else if(e->xclient.data.l[0] == xw.wmdeletewin) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* Send SIGHUP to shell */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							kill(pid, SIGHUP); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							exit(EXIT_SUCCESS); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |