killw.c (920B)
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 static xcb_connection_t *conn; 13 14 static void usage(char *); 15 16 static void 17 usage (char *name) 18 { 19 fprintf(stderr, "usage: %s [-p] <wid> [wid...]\n", name); 20 exit(1); 21 } 22 23 int 24 main(int argc, char **argv) 25 { 26 int parent = 0; 27 char *argv0; 28 29 if (argc < 2) 30 usage(argv[0]); 31 32 ARGBEGIN{ 33 case 'p': parent=1; break; 34 default: usage(argv0); 35 }ARGEND; 36 37 init_xcb(&conn); 38 39 /* assume remaining arguments are windows */ 40 while (*argv) { 41 if (parent) { 42 /* kills the client whose WID belongs to */ 43 xcb_kill_client(conn, strtoul(*argv++, NULL, 16)); 44 } else { 45 /* destroy the given window and all its children */ 46 xcb_destroy_window(conn, strtoul(*argv++, NULL, 16)); 47 } 48 } 49 50 xcb_aux_sync(conn); 51 kill_xcb(&conn); 52 53 return 0; 54 }