|
@@ -1,42 +0,0 @@
|
|
|
-#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 is_window_visible(Display *d, XID window) {
|
|
|
- XWindowAttributes xwa;
|
|
|
-
|
|
|
- if (!XGetWindowAttributes(d, window, &xwa))
|
|
|
- return 0;
|
|
|
- return xwa.map_state == IsViewable;
|
|
|
-}
|
|
|
-
|
|
|
-int main(int argc, char **argv) {
|
|
|
- int i;
|
|
|
- Display *d;
|
|
|
- XID w;
|
|
|
-
|
|
|
- d = XOpenDisplay(NULL);
|
|
|
- if (!d)
|
|
|
- exit(1);
|
|
|
- for (i=1; i<argc; i++) {
|
|
|
- w = strtoul(argv[i], NULL, 0);
|
|
|
- if (is_window_visible(d, w))
|
|
|
- close_window(d, w);
|
|
|
- }
|
|
|
- XSync(d, False);
|
|
|
- XCloseDisplay(d);
|
|
|
- return 0;
|
|
|
-}
|