mapw.c (1106B)
1 /* See LICENSE file for copyright and license details. */ 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <err.h> 6 #include <xcb/xcb.h> 7 #include <xcb/xcb_aux.h> 8 9 #include "arg.h" 10 #include "util.h" 11 12 enum { 13 MAP = 1 << 0, 14 UNMAP = 1 << 1, 15 TOGGLE = 1 << 2 16 }; 17 18 static xcb_connection_t *conn; 19 20 static void usage(char *); 21 22 static void 23 usage(char *name) 24 { 25 fprintf(stderr, "usage: %s [-h] [-mut <wid> [wid..]]\n", name); 26 exit(1); 27 } 28 29 int 30 main(int argc, char **argv) 31 { 32 int mapflag = 0; 33 xcb_window_t w = 0; 34 char *argv0; 35 36 ARGBEGIN { 37 case 'm': mapflag = MAP; break; 38 case 'u': mapflag = UNMAP; break; 39 case 't': mapflag = TOGGLE; break; 40 default : usage(argv0); 41 } ARGEND; 42 43 if (argc < 1 || mapflag == 0) 44 usage(argv0); 45 46 init_xcb(&conn); 47 48 while (*argv) { 49 w = strtoul(*argv++, NULL, 16); 50 51 switch (mapflag) { 52 case MAP: 53 xcb_map_window(conn, w); 54 break; 55 case UNMAP: 56 xcb_unmap_window(conn, w); 57 break; 58 case TOGGLE: 59 if (mapped(conn, w)) 60 xcb_unmap_window(conn, w); 61 else 62 xcb_map_window(conn, w); 63 break; 64 } 65 } 66 xcb_aux_sync(conn); 67 68 kill_xcb(&conn); 69 70 return 0; 71 }