pfw.c (761B)
1 /* See LICENSE file for copyright and license details. */ 2 3 #include <err.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 #include <xcb/xcb.h> 7 #include <xcb/xcb_aux.h> 8 9 #include "util.h" 10 11 static xcb_connection_t *conn; 12 13 static xcb_window_t focus_window(void); 14 15 static xcb_window_t 16 focus_window(void) 17 { 18 xcb_window_t w = 0; 19 xcb_get_input_focus_cookie_t c; 20 xcb_get_input_focus_reply_t *r; 21 22 c = xcb_get_input_focus(conn); 23 r = xcb_get_input_focus_reply(conn, c, NULL); 24 if (r == NULL) 25 errx(1, "xcb_get_input_focus"); 26 27 w = r->focus; 28 free(r); 29 30 if (w == XCB_NONE || w == XCB_INPUT_FOCUS_POINTER_ROOT) 31 errx(1, "focus not set"); 32 33 return w; 34 } 35 36 int 37 main(int argc, char **argv) 38 { 39 init_xcb(&conn); 40 41 printf("0x%08x\n", focus_window()); 42 43 kill_xcb(&conn); 44 return 0; 45 }