2019-05-06 15:20:16 +00:00
|
|
|
#pragma once
|
2019-05-05 23:34:08 +00:00
|
|
|
#include <xcb/xcb.h>
|
|
|
|
|
|
|
|
#include "cache.h"
|
2023-06-18 11:57:50 +00:00
|
|
|
#include "meta.h"
|
2019-05-05 23:34:08 +00:00
|
|
|
|
2020-01-18 18:00:35 +00:00
|
|
|
// clang-format off
|
2019-05-05 23:34:08 +00:00
|
|
|
// Splitted into 2 lists because of the limitation of our macros
|
2020-10-22 00:39:51 +00:00
|
|
|
#define ATOM_LIST1 \
|
2019-05-05 23:34:08 +00:00
|
|
|
_NET_WM_WINDOW_OPACITY, \
|
|
|
|
_NET_FRAME_EXTENTS, \
|
|
|
|
WM_STATE, \
|
|
|
|
_NET_WM_NAME, \
|
|
|
|
_NET_WM_PID, \
|
|
|
|
WM_NAME, \
|
|
|
|
WM_CLASS, \
|
2020-10-22 00:39:51 +00:00
|
|
|
WM_ICON_NAME, \
|
2019-05-05 23:34:08 +00:00
|
|
|
WM_TRANSIENT_FOR, \
|
|
|
|
WM_WINDOW_ROLE, \
|
|
|
|
WM_CLIENT_LEADER, \
|
2020-10-22 00:39:51 +00:00
|
|
|
WM_CLIENT_MACHINE, \
|
2019-05-05 23:34:08 +00:00
|
|
|
_NET_ACTIVE_WINDOW, \
|
|
|
|
_COMPTON_SHADOW, \
|
2024-02-15 20:11:42 +00:00
|
|
|
COMPTON_VERSION, \
|
2023-06-18 11:57:50 +00:00
|
|
|
_NET_WM_WINDOW_TYPE, \
|
|
|
|
_XROOTPMAP_ID, \
|
|
|
|
ESETROOT_PMAP_ID, \
|
|
|
|
_XSETROOT_ID
|
2020-10-22 00:39:51 +00:00
|
|
|
|
|
|
|
#define ATOM_LIST2 \
|
2019-05-05 23:34:08 +00:00
|
|
|
_NET_WM_WINDOW_TYPE_DESKTOP, \
|
|
|
|
_NET_WM_WINDOW_TYPE_DOCK, \
|
|
|
|
_NET_WM_WINDOW_TYPE_TOOLBAR, \
|
|
|
|
_NET_WM_WINDOW_TYPE_MENU, \
|
|
|
|
_NET_WM_WINDOW_TYPE_UTILITY, \
|
|
|
|
_NET_WM_WINDOW_TYPE_SPLASH, \
|
|
|
|
_NET_WM_WINDOW_TYPE_DIALOG, \
|
|
|
|
_NET_WM_WINDOW_TYPE_NORMAL, \
|
|
|
|
_NET_WM_WINDOW_TYPE_DROPDOWN_MENU, \
|
|
|
|
_NET_WM_WINDOW_TYPE_POPUP_MENU, \
|
|
|
|
_NET_WM_WINDOW_TYPE_TOOLTIP, \
|
|
|
|
_NET_WM_WINDOW_TYPE_NOTIFICATION, \
|
|
|
|
_NET_WM_WINDOW_TYPE_COMBO, \
|
2019-06-06 01:37:06 +00:00
|
|
|
_NET_WM_WINDOW_TYPE_DND, \
|
|
|
|
_NET_WM_STATE, \
|
2020-01-18 18:00:35 +00:00
|
|
|
_NET_WM_STATE_FULLSCREEN, \
|
2020-10-22 00:39:51 +00:00
|
|
|
_NET_WM_BYPASS_COMPOSITOR, \
|
|
|
|
UTF8_STRING, \
|
|
|
|
C_STRING
|
2020-01-18 18:00:35 +00:00
|
|
|
// clang-format on
|
2019-05-05 23:34:08 +00:00
|
|
|
|
|
|
|
#define ATOM_DEF(x) xcb_atom_t a##x
|
|
|
|
|
2024-02-16 01:00:50 +00:00
|
|
|
struct atom_entry;
|
2019-05-05 23:34:08 +00:00
|
|
|
struct atom {
|
2020-10-22 00:39:51 +00:00
|
|
|
LIST_APPLY(ATOM_DEF, SEP_COLON, ATOM_LIST1);
|
|
|
|
LIST_APPLY(ATOM_DEF, SEP_COLON, ATOM_LIST2);
|
2019-05-05 23:34:08 +00:00
|
|
|
};
|
|
|
|
|
2024-02-16 00:31:53 +00:00
|
|
|
/// Create a new atom object with a xcb connection. `struct atom` does not hold
|
|
|
|
/// a reference to the connection.
|
|
|
|
struct atom *init_atoms(xcb_connection_t *c);
|
2019-05-05 23:34:08 +00:00
|
|
|
|
2024-02-16 00:31:53 +00:00
|
|
|
xcb_atom_t get_atom(struct atom *a, const char *key, xcb_connection_t *c);
|
2024-02-16 01:00:50 +00:00
|
|
|
xcb_atom_t get_atom_cached(struct atom *a, const char *key);
|
2024-02-16 01:03:24 +00:00
|
|
|
const char *get_atom_name(struct atom *a, xcb_atom_t, xcb_connection_t *c);
|
|
|
|
const char *get_atom_name_cached(struct atom *a, xcb_atom_t atom);
|
2024-02-15 20:12:20 +00:00
|
|
|
|
2024-02-15 21:08:48 +00:00
|
|
|
void destroy_atoms(struct atom *a);
|