#include #include #include #include #include #include int main(int argc, char **argv) { Display *display; Window root; XEvent event; if (argc != 1) { char *name; name = strrchr(argv[0], '/'); name = name ? name+1 : argv[0]; fprintf(stderr, "usage: %s\n", name); exit(1); } if ((display = XOpenDisplay(NULL)) == NULL) { fprintf(stderr, "cannot open display\n"); exit(1); } root = DefaultRootWindow(display); if (XGrabPointer( display, root, False, ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) != GrabSuccess) { fprintf(stderr, "cannot grab pointer\n"); exit(1); } XNextEvent(display, &event); if (event.type == ButtonRelease) { Window target; target = event.xbutton.subwindow; if (target == None) target = event.xbutton.window; else target = XmuClientWindow(display, target); if (event.xbutton.button == 1 && target != None) { printf("%ld\n", target); } } XCloseDisplay(display); exit(0); }