ohmu
·
2026-07-25
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
12static xcb_connection_t *conn;
13
14static void usage(char *);
15
16static void
17usage (char *name)
18{
19 fprintf(stderr, "usage: %s [-p] <wid> [wid...]\n", name);
20 exit(1);
21}
22
23int
24main(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}