ohmu
·
2026-07-25
1/* See LICENSE file for copyright and license details. */
2
3#include <xcb/xcb.h>
4#include <xcb/xcb_aux.h>
5#include <stdlib.h>
6#include <stdio.h>
7#include <err.h>
8
9#include "arg.h"
10#include "util.h"
11
12static xcb_connection_t *conn;
13
14static void usage(char *);
15static void stack(xcb_window_t, uint32_t[1]);
16
17static void
18usage(char *name)
19{
20 fprintf(stderr, "usage: %s -rli <wid>\n", name);
21 exit(1);
22}
23
24static void
25stack(xcb_window_t win, uint32_t values[1])
26{
27 xcb_configure_window(conn, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
28}
29
30int
31main(int argc, char **argv)
32{
33 xcb_window_t win;
34 uint32_t values[1];
35 char *argv0 = NULL;
36
37 if (argc != 3)
38 usage(argv[0]);
39
40 init_xcb(&conn);
41
42 win = strtoul(argv[2], NULL, 16);
43 if (!win)
44 return 1;
45
46 ARGBEGIN {
47 case 'r':
48 values[0] = XCB_STACK_MODE_ABOVE;
49 break;
50 case 'l':
51 values[0] = XCB_STACK_MODE_BELOW;
52 break;
53 case 'i':
54 values[0] = XCB_STACK_MODE_OPPOSITE;
55 break;
56 default:
57 usage(argv0);
58 break;
59 } ARGEND
60
61 stack(win, values);
62 xcb_aux_sync(conn);
63
64 kill_xcb(&conn);
65
66 return 0;
67}