diff -r b0c5f18fa666 st.c --- a/st.c Fri Oct 05 11:07:55 2012 +0200 +++ b/st.c Fri Oct 05 18:42:14 2012 +0200 @@ -198,6 +198,7 @@ Window win; XdbeBackBuffer buf; Atom xembed; + Atom wmdeletewin; XIM xim; XIC xic; XftDraw *xft_draw; @@ -2173,6 +2174,8 @@ &(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); @@ -2458,6 +2461,10 @@ } 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); } }