i3
xcb.h File Reference
#include <config.h>
#include "data.h"
#include "xcursor.h"
#include "i3-atoms_rest.xmacro.h"
#include "i3-atoms_NET_SUPPORTED.xmacro.h"
Include dependency graph for xcb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define _NET_WM_STATE_REMOVE   0
 
#define _NET_WM_STATE_ADD   1
 
#define _NET_WM_STATE_TOGGLE   2
 
#define XCB_NUM_LOCK   0xff7f
 
#define CHILD_EVENT_MASK
 The XCB_CW_EVENT_MASK for the child (= real window)
 
#define FRAME_EVENT_MASK
 The XCB_CW_EVENT_MASK for its frame.
 
#define ROOT_EVENT_MASK
 
#define xmacro(atom)
 

Functions

xcb_window_t create_window (xcb_connection_t *conn, Rect r, uint16_t depth, xcb_visualid_t visual, uint16_t window_class, enum xcursor_cursor_t cursor, bool map, uint32_t mask, uint32_t *values)
 Convenience wrapper around xcb_create_window which takes care of depth, generating an ID and checking for errors.
 
void fake_absolute_configure_notify (Con *con)
 Generates a configure_notify_event with absolute coordinates (relative to the X root window, not to the client’s frame) for the given client.
 
void send_take_focus (xcb_window_t window, xcb_timestamp_t timestamp)
 Sends the WM_TAKE_FOCUS ClientMessage to the given window.
 
void xcb_set_window_rect (xcb_connection_t *conn, xcb_window_t window, Rect r)
 Configures the given window to have the size/position specified by given rect.
 
xcb_atom_t xcb_get_preferred_window_type (xcb_get_property_reply_t *reply)
 Returns the first supported _NET_WM_WINDOW_TYPE atom.
 
bool xcb_reply_contains_atom (xcb_get_property_reply_t *prop, xcb_atom_t atom)
 Returns true if the given reply contains the given data.
 
xcb_visualtype_t * get_visualtype_by_id (xcb_visualid_t visual_id)
 Get visual type specified by visualid.
 
xcb_visualid_t get_visualid_by_depth (uint16_t depth)
 Get visualid with specified depth.
 
void xcb_add_property_atom (xcb_connection_t *conn, xcb_window_t window, xcb_atom_t property, xcb_atom_t atom)
 Add an atom to a list of atoms the given property defines.
 
void xcb_remove_property_atom (xcb_connection_t *conn, xcb_window_t window, xcb_atom_t property, xcb_atom_t atom)
 Remove an atom from a list of atoms the given property defines without removing any other potentially set atoms.
 
void xcb_grab_buttons (xcb_connection_t *conn, xcb_window_t window, int *buttons)
 Grab the specified buttons on a window when managing it.
 

Variables

I3_NET_SUPPORTED_ATOMS_XMACRO I3_REST_ATOMS_XMACRO unsigned int xcb_numlock_mask
 

Macro Definition Documentation

◆ _NET_WM_STATE_ADD

#define _NET_WM_STATE_ADD   1

Definition at line 18 of file xcb.h.

Referenced by handle_net_wm_state_change().

◆ _NET_WM_STATE_REMOVE

#define _NET_WM_STATE_REMOVE   0

Definition at line 17 of file xcb.h.

Referenced by handle_net_wm_state_change().

◆ _NET_WM_STATE_TOGGLE

#define _NET_WM_STATE_TOGGLE   2

Definition at line 19 of file xcb.h.

Referenced by handle_net_wm_state_change().

◆ CHILD_EVENT_MASK

#define CHILD_EVENT_MASK
Value:
(XCB_EVENT_MASK_PROPERTY_CHANGE | \
XCB_EVENT_MASK_STRUCTURE_NOTIFY | \
XCB_EVENT_MASK_FOCUS_CHANGE)

The XCB_CW_EVENT_MASK for the child (= real window)

Definition at line 28 of file xcb.h.

Referenced by manage_window(), x_push_changes(), and x_push_node().

◆ FRAME_EVENT_MASK

#define FRAME_EVENT_MASK
Value:
(XCB_EVENT_MASK_BUTTON_PRESS | /* …mouse is pressed/released */ \
XCB_EVENT_MASK_BUTTON_RELEASE | \
XCB_EVENT_MASK_POINTER_MOTION | /* …mouse is moved */ \
XCB_EVENT_MASK_EXPOSURE | /* …our window needs to be redrawn */ \
XCB_EVENT_MASK_STRUCTURE_NOTIFY | /* …the frame gets destroyed */ \
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | /* …the application tries to resize itself */ \
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | /* …subwindows get notifies */ \
XCB_EVENT_MASK_ENTER_WINDOW) /* …user moves cursor inside our window */

The XCB_CW_EVENT_MASK for its frame.

Definition at line 33 of file xcb.h.

Referenced by x_con_init(), x_mask_event_mask(), x_push_changes(), and x_push_node().

◆ ROOT_EVENT_MASK

#define ROOT_EVENT_MASK
Value:
(XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \
XCB_EVENT_MASK_BUTTON_PRESS | \
XCB_EVENT_MASK_STRUCTURE_NOTIFY | /* when the user adds a screen (e.g. video \
* projector), the root window gets a \
* ConfigureNotify */ \
XCB_EVENT_MASK_POINTER_MOTION | \
XCB_EVENT_MASK_PROPERTY_CHANGE | \
XCB_EVENT_MASK_FOCUS_CHANGE | \
XCB_EVENT_MASK_ENTER_WINDOW)

Definition at line 42 of file xcb.h.

Referenced by main(), and x_push_changes().

◆ XCB_NUM_LOCK

#define XCB_NUM_LOCK   0xff7f

Definition at line 22 of file xcb.h.

Referenced by handle_mapping_notify(), and main().

◆ xmacro

#define xmacro ( atom)
Value:
extern xcb_atom_t A_##atom;

Definition at line 53 of file xcb.h.

Function Documentation

◆ create_window()

xcb_window_t create_window ( xcb_connection_t * conn,
Rect r,
uint16_t depth,
xcb_visualid_t visual,
uint16_t window_class,
enum xcursor_cursor_t cursor,
bool map,
uint32_t mask,
uint32_t * values )

Convenience wrapper around xcb_create_window which takes care of depth, generating an ID and checking for errors.

Definition at line 19 of file xcb.c.

References conn, ELOG, Rect::height, root, Rect::width, Rect::x, xcursor_get_cursor(), and Rect::y.

Referenced by create_drop_indicator(), open_placeholder_window(), resize_graphical_handler(), sighandler_create_dialogs(), and x_con_init().

Here is the call graph for this function:

◆ fake_absolute_configure_notify()

void fake_absolute_configure_notify ( Con * con)

Generates a configure_notify_event with absolute coordinates (relative to the X root window, not to the client’s frame) for the given client.

Definition at line 64 of file xcb.c.

References Con::border_width, conn, DLOG, fake_configure_notify(), Rect::height, Window::id, Con::rect, Rect::width, Con::window, Con::window_rect, Rect::x, and Rect::y.

Referenced by handle_configure_request(), and x_push_node().

Here is the call graph for this function:

◆ get_visualid_by_depth()

xcb_visualid_t get_visualid_by_depth ( uint16_t depth)

Get visualid with specified depth.

Definition at line 199 of file xcb.c.

References root_screen.

Referenced by sighandler_create_dialogs(), x_con_init(), and x_push_node().

◆ get_visualtype_by_id()

xcb_visualtype_t * get_visualtype_by_id ( xcb_visualid_t visual_id)

Get visual type specified by visualid.

Definition at line 178 of file xcb.c.

References root_screen, and visual_id.

Referenced by sighandler_create_dialogs(), x_con_init(), and x_push_node().

◆ send_take_focus()

void send_take_focus ( xcb_window_t window,
xcb_timestamp_t timestamp )

Sends the WM_TAKE_FOCUS ClientMessage to the given window.

Definition at line 84 of file xcb.c.

References conn, DLOG, and scalloc().

Referenced by x_push_changes().

Here is the call graph for this function:

◆ xcb_add_property_atom()

void xcb_add_property_atom ( xcb_connection_t * conn,
xcb_window_t window,
xcb_atom_t property,
xcb_atom_t atom )

Add an atom to a list of atoms the given property defines.

This is useful, for example, for manipulating _NET_WM_STATE.

Definition at line 224 of file xcb.c.

References conn.

Referenced by con_set_fullscreen_mode(), ewmh_update_focused(), ewmh_update_sticky(), set_hidden_state(), and set_maximized_state().

◆ xcb_get_preferred_window_type()

xcb_atom_t xcb_get_preferred_window_type ( xcb_get_property_reply_t * reply)

Returns the first supported _NET_WM_WINDOW_TYPE atom.

Definition at line 123 of file xcb.c.

Referenced by manage_window(), and window_update_type().

◆ xcb_grab_buttons()

void xcb_grab_buttons ( xcb_connection_t * conn,
xcb_window_t window,
int * buttons )

Grab the specified buttons on a window when managing it.

Definition at line 270 of file xcb.c.

References conn, and root.

Referenced by manage_window(), and regrab_all_buttons().

◆ xcb_remove_property_atom()

void xcb_remove_property_atom ( xcb_connection_t * conn,
xcb_window_t window,
xcb_atom_t property,
xcb_atom_t atom )

Remove an atom from a list of atoms the given property defines without removing any other potentially set atoms.

This is useful, for example, for manipulating _NET_WM_STATE.

Definition at line 234 of file xcb.c.

References conn, and FREE.

Referenced by con_set_fullscreen_mode(), ewmh_update_focused(), ewmh_update_sticky(), set_hidden_state(), and set_maximized_state().

◆ xcb_reply_contains_atom()

bool xcb_reply_contains_atom ( xcb_get_property_reply_t * prop,
xcb_atom_t atom )

Returns true if the given reply contains the given data.

Definition at line 155 of file xcb.c.

Referenced by manage_window().

◆ xcb_set_window_rect()

void xcb_set_window_rect ( xcb_connection_t * conn,
xcb_window_t window,
Rect r )

Configures the given window to have the size/position specified by given rect.

Definition at line 107 of file xcb.c.

References add_ignore_event(), conn, and Rect::x.

Referenced by restore_geometry(), and x_push_node().

Here is the call graph for this function:

Variable Documentation

◆ xcb_numlock_mask