core

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

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 }