tmapw.c - wmutils - X windows manipulation utilities
 (HTM) git clone git://z3bra.org/wmutils
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tmapw.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 }