12345678910111213141516171819202122232425262728293031 |
- #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;
- }
|