core

WMUtils core.
git clone git://git.zepp.club/core.git
Log | Files | Refs | README | LICENSE

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 }