|
@@ -0,0 +1,31 @@
|
|
|
+#include <X11/Xutil.h>
|
|
|
+#include <X11/Xlib.h>
|
|
|
+#include <string.h>
|
|
|
+#include <stdlib.h>
|
|
|
+
|
|
|
+int close_window(Display *d, XID window) {
|
|
|
+ XClientMessageEvent ev;
|
|
|
+ memset(&ev, 0, sizeof(ev));
|
|
|
+ ev.type = ClientMessage;
|
|
|
+ ev.display = d;
|
|
|
+ ev.window = window;
|
|
|
+ ev.format = 32;
|
|
|
+ ev.message_type = XInternAtom(d, "WM_PROTOCOLS", False);
|
|
|
+ ev.data.l[0] = XInternAtom(d, "WM_DELETE_WINDOW", False);;
|
|
|
+ return XSendEvent(ev.display, ev.window, True, 0, (XEvent *) & ev);
|
|
|
+}
|
|
|
+
|
|
|
+int main(int argc, char **argv) {
|
|
|
+ int i;
|
|
|
+ Display *d;
|
|
|
+
|
|
|
+ d = XOpenDisplay(NULL);
|
|
|
+ if (!d)
|
|
|
+ exit(1);
|
|
|
+ for (i=1; i<argc; i++) {
|
|
|
+ close_window(d, strtoul(argv[i], NULL, 0));
|
|
|
+ }
|
|
|
+ XSync(d, False);
|
|
|
+ XCloseDisplay(d);
|
|
|
+ return 0;
|
|
|
+}
|