master ohmu/wmutils / src / core / chwso.c
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}