2378 lines
97 KiB
Plaintext
2378 lines
97 KiB
Plaintext
#ifndef __XCB_EWMH_H__
|
|
#define __XCB_EWMH_H__
|
|
|
|
/*
|
|
* Copyright (C) 2009-2011 Arnaud Fontaine <arnau@debian.org>
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person
|
|
* obtaining a copy of this software and associated documentation
|
|
* files (the "Software"), to deal in the Software without
|
|
* restriction, including without limitation the rights to use, copy,
|
|
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
* of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be
|
|
* included in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
|
|
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* Except as contained in this notice, the names of the authors or
|
|
* their institutions shall not be used in advertising or otherwise to
|
|
* promote the sale, use or other dealings in this Software without
|
|
* prior written authorization from the authors.
|
|
*/
|
|
|
|
/**
|
|
* @defgroup xcb__ewmh_t XCB EWMH Functions
|
|
*
|
|
* These functions allow easy handling of the protocol described in
|
|
* the Extended Window Manager Hints specification. The list of Atoms
|
|
* is stored as an M4 file (atomlist.m4) where each Atom is stored as
|
|
* a variable defined in the header.
|
|
*
|
|
* Replies of requests generating a list of pointers (such as list of
|
|
* windows, atoms and UTF-8 strings) are simply stored as a structure
|
|
* holding the XCB reply which should (usually) never be accessed
|
|
* directly and has to be wipe afterwards. This structure provides a
|
|
* convenient access to the list given in the reply itself.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
#include <xcb/xcb.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Hold EWMH information specific to a screen
|
|
*/
|
|
typedef struct {
|
|
/** The X connection */
|
|
xcb_connection_t *connection;
|
|
/** The screens on this connection */
|
|
xcb_screen_t **screens;
|
|
int nb_screens;
|
|
/** _NET_WM_CM_Sn atoms depending on the number of screens */
|
|
xcb_atom_t *_NET_WM_CM_Sn;
|
|
/** The EWMH atoms of this connection */dnl
|
|
define(`DO', `ifelse(`$1', , , `
|
|
xcb_atom_t $1;DO(shift($@))')')dnl
|
|
include(atomlist.m4)dnl
|
|
} xcb_ewmh_connection_t;
|
|
|
|
/**
|
|
* @brief Hold a GetProperty reply containing a list of Atoms
|
|
*/
|
|
typedef struct {
|
|
/** The number of Atoms */
|
|
uint32_t atoms_len;
|
|
/** The list of Atoms */
|
|
xcb_atom_t *atoms;
|
|
/** The actual GetProperty reply */
|
|
xcb_get_property_reply_t *_reply;
|
|
} xcb_ewmh_get_atoms_reply_t;
|
|
|
|
/**
|
|
* @brief Hold a GetProperty reply containing a list of Windows
|
|
*/
|
|
typedef struct {
|
|
/** The number of Windows */
|
|
uint32_t windows_len;
|
|
/** The list of Windows */
|
|
xcb_window_t *windows;
|
|
/** The actual GetProperty reply */
|
|
xcb_get_property_reply_t *_reply;
|
|
} xcb_ewmh_get_windows_reply_t;
|
|
|
|
/**
|
|
* @brief Hold a GetProperty reply containg a list of UTF-8 strings
|
|
*/
|
|
typedef struct {
|
|
/** The number of UTF-8 strings */
|
|
uint32_t strings_len;
|
|
/** The list of UTF-8 strings */
|
|
char *strings;
|
|
/** The actual GetProperty reply */
|
|
xcb_get_property_reply_t *_reply;
|
|
} xcb_ewmh_get_utf8_strings_reply_t;
|
|
|
|
/**
|
|
* @brief Coordinates Property values
|
|
*/
|
|
typedef struct {
|
|
/** The x coordinate */
|
|
uint32_t x;
|
|
/** The y coordinate */
|
|
uint32_t y;
|
|
} xcb_ewmh_coordinates_t;
|
|
|
|
/**
|
|
* @brief Hold reply of _NET_DESKTOP_VIEWPORT GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** The number of desktop viewports */
|
|
uint32_t desktop_viewport_len;
|
|
/** The desktop viewports */
|
|
xcb_ewmh_coordinates_t *desktop_viewport;
|
|
/** The actual GetProperty reply */
|
|
xcb_get_property_reply_t *_reply;
|
|
} xcb_ewmh_get_desktop_viewport_reply_t;
|
|
|
|
/**
|
|
* @brief Geometry Property values
|
|
*/
|
|
typedef struct {
|
|
/** The x coordinate */
|
|
uint32_t x;
|
|
/** The y coordinate */
|
|
uint32_t y;
|
|
/** The width */
|
|
uint32_t width;
|
|
/** The height */
|
|
uint32_t height;
|
|
} xcb_ewmh_geometry_t;
|
|
|
|
/**
|
|
* @brief Hold reply of a _NET_WORKAREA GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** The number of desktop workarea */
|
|
uint32_t workarea_len;
|
|
/** The list of desktop workarea */
|
|
xcb_ewmh_geometry_t *workarea;
|
|
/** The actual GetProperty reply */
|
|
xcb_get_property_reply_t *_reply;
|
|
} xcb_ewmh_get_workarea_reply_t;
|
|
|
|
/**
|
|
* @brief Source indication in requests
|
|
*/
|
|
typedef enum {
|
|
/** No source at all (for clients supporting an older version of
|
|
EWMH specification) */
|
|
XCB_EWMH_CLIENT_SOURCE_TYPE_NONE = 0,
|
|
/** Normal application */
|
|
XCB_EWMH_CLIENT_SOURCE_TYPE_NORMAL = 1,
|
|
/** Pagers and other clients that represent direct user actions */
|
|
XCB_EWMH_CLIENT_SOURCE_TYPE_OTHER = 2
|
|
} xcb_ewmh_client_source_type_t;
|
|
|
|
/**
|
|
* @brief _NET_DESKTOP_LAYOUT orientation
|
|
*/
|
|
typedef enum {
|
|
/** Horizontal orientation (desktops laid out in rows) */
|
|
XCB_EWMH_WM_ORIENTATION_HORZ = 0,
|
|
/** Vertical orientation (desktops laid out in columns) */
|
|
XCB_EWMH_WM_ORIENTATION_VERT = 1
|
|
} xcb_ewmh_desktop_layout_orientation_t;
|
|
|
|
/**
|
|
* @brief _NET_DESKTOP_LAYOUT starting corner
|
|
*/
|
|
typedef enum {
|
|
/** Starting corner on the top left */
|
|
XCB_EWMH_WM_TOPLEFT = 0,
|
|
/** Starting corner on the top right */
|
|
XCB_EWMH_WM_TOPRIGHT = 1,
|
|
/** Starting corner on the bottom right */
|
|
XCB_EWMH_WM_BOTTOMRIGHT = 2,
|
|
/** Starting corner on the bottom left */
|
|
XCB_EWMH_WM_BOTTOMLEFT = 3
|
|
} xcb_ewmh_desktop_layout_starting_corner_t;
|
|
|
|
/**
|
|
* @brief Hold reply of a _NET_DESKTOP_LAYOUT GetProperty
|
|
* @see xcb_ewmh_desktop_layout_orientation_t
|
|
* @see xcb_ewmh_desktop_layout_starting_corner_t
|
|
*/
|
|
typedef struct {
|
|
/** The desktops orientation */
|
|
uint32_t orientation;
|
|
/** The number of columns */
|
|
uint32_t columns;
|
|
/** The number of rows */
|
|
uint32_t rows;
|
|
/** The desktops starting corner */
|
|
uint32_t starting_corner;
|
|
} xcb_ewmh_get_desktop_layout_reply_t;
|
|
|
|
/**
|
|
* @brief _NET_WM_MOVERESIZE value when moving via keyboard
|
|
* @see xcb_ewmh_moveresize_direction_t
|
|
*/
|
|
typedef enum {
|
|
/** The window x coordinate */
|
|
XCB_EWMH_MOVERESIZE_WINDOW_X = (1 << 8),
|
|
/** The window y coordinate */
|
|
XCB_EWMH_MOVERESIZE_WINDOW_Y = (1 << 9),
|
|
/** The window width */
|
|
XCB_EWMH_MOVERESIZE_WINDOW_WIDTH = (1 << 10),
|
|
/** The window height */
|
|
XCB_EWMH_MOVERESIZE_WINDOW_HEIGHT = (1 << 11)
|
|
} xcb_ewmh_moveresize_window_opt_flags_t;
|
|
|
|
/**
|
|
* @brief _NET_WM_MOVERESIZE window movement or resizing
|
|
*/
|
|
typedef enum {
|
|
/** Resizing applied on the top left edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_TOPLEFT = 0,
|
|
/** Resizing applied on the top edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_TOP = 1,
|
|
/** Resizing applied on the top right edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_TOPRIGHT = 2,
|
|
/** Resizing applied on the right edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_RIGHT = 3,
|
|
/** Resizing applied on the bottom right edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4,
|
|
/** Resizing applied on the bottom edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOM = 5,
|
|
/** Resizing applied on the bottom left edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6,
|
|
/** Resizing applied on the left edge */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_LEFT = 7,
|
|
/* Movement only */
|
|
XCB_EWMH_WM_MOVERESIZE_MOVE = 8,
|
|
/* Size via keyboard */
|
|
XCB_EWMH_WM_MOVERESIZE_SIZE_KEYBOARD = 9,
|
|
/* Move via keyboard */
|
|
XCB_EWMH_WM_MOVERESIZE_MOVE_KEYBOARD = 10,
|
|
/* Cancel operation */
|
|
XCB_EWMH_WM_MOVERESIZE_CANCEL = 11
|
|
} xcb_ewmh_moveresize_direction_t;
|
|
|
|
/**
|
|
* @brief Action on the _NET_WM_STATE property
|
|
*/
|
|
typedef enum {
|
|
/* Remove/unset property */
|
|
XCB_EWMH_WM_STATE_REMOVE = 0,
|
|
/* Add/set property */
|
|
XCB_EWMH_WM_STATE_ADD = 1,
|
|
/* Toggle property */
|
|
XCB_EWMH_WM_STATE_TOGGLE = 2
|
|
} xcb_ewmh_wm_state_action_t;
|
|
|
|
/**
|
|
* @brief Hold reply of _NET_WM_STRUT_PARTIAL GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** Reserved space on the left border of the screen */
|
|
uint32_t left;
|
|
/** Reserved space on the right border of the screen */
|
|
uint32_t right;
|
|
/** Reserved space on the top border of the screen */
|
|
uint32_t top;
|
|
/** Reserved space on the bottom border of the screen */
|
|
uint32_t bottom;
|
|
/** Beginning y coordinate of the left strut */
|
|
uint32_t left_start_y;
|
|
/** Ending y coordinate of the left strut */
|
|
uint32_t left_end_y;
|
|
/** Beginning y coordinate of the right strut */
|
|
uint32_t right_start_y;
|
|
/** Ending y coordinate of the right strut */
|
|
uint32_t right_end_y;
|
|
/** Beginning x coordinate of the top strut */
|
|
uint32_t top_start_x;
|
|
/** Ending x coordinate of the top strut */
|
|
uint32_t top_end_x;
|
|
/** Beginning x coordinate of the bottom strut */
|
|
uint32_t bottom_start_x;
|
|
/** Ending x coordinate of the bottom strut */
|
|
uint32_t bottom_end_x;
|
|
} xcb_ewmh_wm_strut_partial_t;
|
|
|
|
/**
|
|
* @brief Hold a single icon from reply of _NET_WM_ICON GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** Icon width */
|
|
uint32_t width;
|
|
/** Icon height */
|
|
uint32_t height;
|
|
/** Rows, left to right and top to bottom of the CARDINAL ARGB */
|
|
uint32_t *data;
|
|
/** Number of icons remaining */
|
|
unsigned int rem;
|
|
/** Index of the current icon in the array of icons */
|
|
unsigned int index;
|
|
} xcb_ewmh_wm_icon_iterator_t;
|
|
|
|
/**
|
|
* @brief Hold reply of _NET_WM_ICON GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** Number of icons */
|
|
unsigned int num_icons;
|
|
/** The actual GetProperty reply */
|
|
xcb_get_property_reply_t *_reply;
|
|
} xcb_ewmh_get_wm_icon_reply_t;
|
|
|
|
/**
|
|
* @brief Hold reply of _NET_REQUEST_FRAME_EXTENTS GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** Width of the left border */
|
|
uint32_t left;
|
|
/** Width of the right border */
|
|
uint32_t right;
|
|
/** Width of the top border */
|
|
uint32_t top;
|
|
/** Width of the bottom border */
|
|
uint32_t bottom;
|
|
} xcb_ewmh_get_extents_reply_t;
|
|
|
|
/**
|
|
* @brief Hold reply of _NET_WM_FULLSCREEN_MONITORS GetProperty
|
|
*/
|
|
typedef struct {
|
|
/** Monitor whose top edge defines the top edge of the fullscreen
|
|
window */
|
|
uint32_t top;
|
|
/** Monitor whose bottom edge defines the bottom edge of the
|
|
fullscreen window */
|
|
uint32_t bottom;
|
|
/** Monitor whose left edge defines the left edge of the fullscreen
|
|
window */
|
|
uint32_t left;
|
|
/** Monitor whose right edge defines the right edge of the
|
|
fullscreen window */
|
|
uint32_t right;
|
|
} xcb_ewmh_get_wm_fullscreen_monitors_reply_t;
|
|
|
|
/**
|
|
* @brief Send InternAtom requests for the EWMH atoms and its required atoms
|
|
*
|
|
* @param c The connection to the X server
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The cookies corresponding to EWMH atoms
|
|
*/
|
|
xcb_intern_atom_cookie_t *xcb_ewmh_init_atoms(xcb_connection_t *c,
|
|
xcb_ewmh_connection_t *ewmh);
|
|
|
|
/**
|
|
* @brief Process the replies to the screen initialisation requests
|
|
* previously sent
|
|
*
|
|
* @param emwh The information relative to EWMH
|
|
* @param ewmh_cookies The cookies corresponding to EWMH atoms
|
|
* @param e Error if any
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_init_atoms_replies(xcb_ewmh_connection_t *ewmh,
|
|
xcb_intern_atom_cookie_t *ewmh_cookies,
|
|
xcb_generic_error_t **e);
|
|
|
|
static inline void
|
|
xcb_ewmh_connection_wipe(xcb_ewmh_connection_t *ewmh)
|
|
{
|
|
free(ewmh->screens);
|
|
free(ewmh->_NET_WM_CM_Sn);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a SendEvent request containing a ClientMessage event
|
|
*
|
|
* This function is called by all the xcb_ewmh_request* functions
|
|
* whose should be used instead of calling directly this function
|
|
*
|
|
* @param c The X connection
|
|
* @param window The window where the action will be applied
|
|
* @param dest The destination window (usually the root window)
|
|
* @param atom The type of the message
|
|
* @param data_len The length of data to be sent
|
|
* @param data The data to be sent
|
|
* @return The cookie associated with the SendEvent request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_send_client_message(xcb_connection_t *c,
|
|
xcb_window_t window,
|
|
xcb_window_t dest,
|
|
xcb_atom_t atom,
|
|
uint32_t data_len,
|
|
const uint32_t *data);
|
|
|
|
uint8_t xcb_ewmh_get_window_from_reply(xcb_window_t *window,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_window_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_window_t *window,
|
|
xcb_generic_error_t **e);
|
|
|
|
uint8_t xcb_ewmh_get_cardinal_from_reply(uint32_t *cardinal,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_cardinal_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *cardinal,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Get a list of atoms from a given GetProperty reply whose
|
|
* type is ATOM
|
|
*
|
|
* This function is called by all the xcb_ewmh_get_*_from_reply
|
|
* functions whose should be used instead of calling it directly.
|
|
* Indeed, The GetProperty request has been previously sent by the
|
|
* corresponding xcb_ewmh_get_*.
|
|
*
|
|
* @param atoms The atoms list
|
|
* @param r The reply to get the atoms list from
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_atoms_from_reply(xcb_ewmh_get_atoms_reply_t *atoms,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
/**
|
|
* @brief Get a list of atoms from the reply of a GetProperty request
|
|
* whose type is ATOM
|
|
*
|
|
* This function is called by all the xcb_ewmh_get_*_reply functions
|
|
* whose should be used instead of calling it directly. The
|
|
* GetProperty request has been previously sent by the corresponding
|
|
* xcb_ewmh_get_*.
|
|
*
|
|
* @param ewmh The per-screen EWMH specific information
|
|
* @param cookie The GetProperty cookie
|
|
* @param atoms The atoms list
|
|
* @param e The error if any
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_atoms_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_atoms_reply_t *atoms,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Wipe the Atoms list reply
|
|
*
|
|
* This function must be called to free the memory allocated for atoms
|
|
* when the reply is requested in *_reply functions.
|
|
*
|
|
* @param data The X reply to be freed
|
|
*/
|
|
void xcb_ewmh_get_atoms_reply_wipe(xcb_ewmh_get_atoms_reply_t *data);
|
|
|
|
/**
|
|
* @brief Get a list of atoms from a given GetProperty reply whose
|
|
* type is WINDOW
|
|
*
|
|
* This function is called by all the xcb_ewmh_get_*_from_reply
|
|
* functions whose should be used instead of calling it directly.
|
|
* Indeed, The GetProperty request has been previously sent by the
|
|
* corresponding xcb_ewmh_get_*.
|
|
*
|
|
* @param atoms The atoms list
|
|
* @param r The reply to get the atoms list from
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_windows_from_reply(xcb_ewmh_get_windows_reply_t *atoms,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_utf8_strings_from_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_utf8_strings_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Get a list of atoms from the reply of a GetProperty request
|
|
* whose type is WINDOW
|
|
*
|
|
* This function is called by all the xcb_ewmh_get_*_reply functions
|
|
* whose should be used instead of calling it directly. The
|
|
* GetProperty request has been previously sent by the corresponding
|
|
* xcb_ewmh_get_*.
|
|
*
|
|
* @param ewmh The per-screen EWMH specific information
|
|
* @param cookie The GetProperty cookie
|
|
* @param atoms The atoms list
|
|
* @param e The error if any
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_windows_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_windows_reply_t *atoms,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Wipe the windows list reply
|
|
*
|
|
* This function must be called to the free the memory allocated for
|
|
* windows when the reply is requested in '_reply' functions.
|
|
*
|
|
* @param data The X reply to be freed
|
|
*/
|
|
void xcb_ewmh_get_windows_reply_wipe(xcb_ewmh_get_windows_reply_t *data);
|
|
|
|
/**
|
|
* @brief Wipe the UTF-8 strings list reply
|
|
*
|
|
* This function must be called to the free the memory allocated for
|
|
* UTF-8 strings when the reply is requested in '_reply' functions.
|
|
*
|
|
* @param data The X reply to be freed
|
|
*/
|
|
void xcb_ewmh_get_utf8_strings_reply_wipe(xcb_ewmh_get_utf8_strings_reply_t *data);
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_SUPPORTED
|
|
*
|
|
* _NET_SUPPORTED, ATOM[]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param list_len The number of Atoms supported by the WM
|
|
* @param list The Atoms supported by the WM
|
|
* @return Cookie associated with the ChangeProperty _NET_SUPPORTED request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_supported(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_supported
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_supported_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_SUPPORTED root window
|
|
* property
|
|
*
|
|
* _NET_SUPPORTED, ATOM[]/32
|
|
*
|
|
* This property MUST be set by the Window Manager to indicate which
|
|
* hints it supports. For example: considering _NET_WM_STATE both this
|
|
* atom and all supported states e.g. _NET_WM_STATE_MODAL,
|
|
* _NET_WM_STATE_STICKY, would be listed. This assumes that backwards
|
|
* incompatible changes will not be made to the hints (without being
|
|
* renamed).
|
|
*
|
|
* This form can be used only if the request will cause a reply to be
|
|
* generated. Any returned error will be placed in the event queue.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_SUPPORTED cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_supported_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_supported_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_supported(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the list of supported atoms
|
|
*
|
|
* @param supported The list of atoms contained in the reply
|
|
* @param r GetProperty _NET_SUPPORTED reply
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_supported_from_reply(xcb_ewmh_get_atoms_reply_t *supported,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_atoms_from_reply(supported, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_SUPPORTED cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_window_supported_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_SUPPORTED GetProperty request cookie
|
|
* @param supported The reply to be filled
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_supported_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_atoms_reply_t *supported,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_atoms_reply(ewmh, cookie, supported, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_CLIENT_LIST
|
|
*
|
|
* _NET_CLIENT_LIST, WINDOW[]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param list_len The number of Atoms supported by the WM
|
|
* @param list The Atoms supported by the WM
|
|
* @return Cookie associated with the ChangeProperty _NET_CLIENT_LIST request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_client_list(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_window_t *list);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_client_list
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_client_list_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_window_t *list);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_CLIENT_LIST root window
|
|
* property
|
|
*
|
|
* This array contains all X Windows managed by the Window
|
|
* Manager. _NET_CLIENT_LIST has initial mapping order, starting with
|
|
* the oldest window. This property SHOULD be set and updated by the
|
|
* Window Manager.
|
|
*
|
|
* @param ewmh The information relative to EWMH.
|
|
* @return The _NET_CLIENT_LIST cookie of the GetProperty request.
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_client_list_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_CLIENT_LIST root window
|
|
* property
|
|
*
|
|
* @see xcb_ewmh_get_client_list_unchecked
|
|
* @param ewmh The information relative to EWMH.
|
|
* @return The _NET_CLIENT_LIST cookie of the GetProperty request.
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_client_list(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the list of client windows from a GetProperty
|
|
* _NET_CLIENT_LIST reply
|
|
*
|
|
* @param clients The list of clients contained in the reply
|
|
* @param r GetProperty _NET_CLIENT_LIST reply
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_client_list_from_reply(xcb_ewmh_get_windows_reply_t *clients,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_windows_from_reply(clients, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_CLIENT_LIST cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_window_client_list_unchecked() is used. Otherwise, it
|
|
* stores the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_CLIENT_LIST GetProperty request cookie
|
|
* @param clients The list of clients to be filled
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_client_list_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_windows_reply_t *clients,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_windows_reply(ewmh, cookie, clients, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_CLIENT_LIST_STACKING
|
|
*
|
|
* _NET_CLIENT_LIST_STACKING, WINDOW[]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param list_len The number of Atoms supported by the WM
|
|
* @param list The Atoms supported by the WM
|
|
* @return Cookie associated with the ChangeProperty _NET_CLIENT_LIST_STACKING request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_client_list_stacking(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_window_t *list);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_client_list_stacking
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_client_list_stacking_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_window_t *list);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_CLIENT_LIST_STACKING
|
|
* root window property
|
|
*
|
|
* This array contains all X Windows managed by the Window
|
|
* Manager. _NET_CLIENT_LIST_STACKING has initial mapping order,
|
|
* starting with the oldest window. This property SHOULD be set and
|
|
* updated by the Window Manager.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @return The _NET_CLIENT_LIST_STACKING cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_client_list_stacking_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_client_list_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_client_list_stacking(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the list of client windows from a GetProperty
|
|
* _NET_CLIENT_LIST_STACKING reply
|
|
*
|
|
* @param clients The list of clients contained in the reply
|
|
* @param r GetProperty _NET_CLIENT_LIST_STACKING reply
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_client_list_stacking_from_reply(xcb_ewmh_get_windows_reply_t *clients,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_windows_from_reply(clients, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_CLIENT_LIST_STACKING
|
|
* cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_window_client_list_stacking_unchecked() is used.
|
|
* Otherwise, it stores the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_CLIENT_LIST_STACKING GetProperty request cookie
|
|
* @param clients The list of clients to be filled
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_client_list_stacking_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_windows_reply_t *clients,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_windows_reply(ewmh, cookie, clients, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_NUMBER_OF_DESKTOPS
|
|
*
|
|
* _NET_NUMBER_OF_DESKTOPS? CARDINAL/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param number_of_desktops The number of desktops
|
|
* @return Cookie associated with the ChangeProperty _NET_NUMBER_OF_DESKTOPS request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_number_of_desktops(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t number_of_desktops);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_number_of_desktops
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_number_of_desktops_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t number_of_desktops);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_NUMBER_OF_DESKTOPS root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_NUMBER_OF_DESKTOPS cookie of the GetProperty request.
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_number_of_desktops_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_number_of_desktops_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_number_of_desktops(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the list of client windows from a GetProperty
|
|
* _NET_NUMBER_OF_DESKTOPS reply
|
|
*
|
|
* @param clients The list of clients contained in the reply
|
|
* @param r GetProperty _NET_NUMBER_OF_DESKTOPS reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_number_of_desktops_from_reply(uint32_t *number_of_desktops,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(number_of_desktops, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_NUMBER_OF_DESKTOPS cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_window_number_of_desktops_unchecked() is used. Otherwise,
|
|
* it stores the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_NUMBER_OF_DESKTOPS GetProperty request cookie
|
|
* @param supported The reply to be filled
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_number_of_desktops_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *number_of_desktops,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, number_of_desktops, e);
|
|
}
|
|
|
|
static inline xcb_void_cookie_t
|
|
xcb_ewmh_request_change_number_of_desktops(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_number_of_desktops)
|
|
{
|
|
return xcb_ewmh_send_client_message(ewmh->connection, XCB_NONE,
|
|
ewmh->screens[screen_nbr]->root,
|
|
ewmh->_NET_NUMBER_OF_DESKTOPS,
|
|
sizeof(new_number_of_desktops),
|
|
&new_number_of_desktops);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_DESKTOP_GEOMETRY
|
|
*
|
|
* _NET_DESKTOP_GEOMETRY width, height, CARDINAL[2]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param new_width The new desktop width
|
|
* @param new_height The new desktop height
|
|
* @return Cookie associated with the ChangeProperty _NET_DESKTOP_GEOMETRY request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_geometry(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_width,
|
|
uint32_t new_height);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_desktop_geometry
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_geometry_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_width,
|
|
uint32_t new_height);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_DESKTOP_GEOMETRY root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_DESKTOP_GEOMETRY cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_geometry_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_desktop_geometry_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_geometry(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Send ClientMessage requesting to change the _NET_DESKTOP_GEOMETRY
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param new_width The new desktop width
|
|
* @param new_height The new desktop height
|
|
* @return The SendEvent cookie
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_request_change_desktop_geometry(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_width,
|
|
uint32_t new_height);
|
|
|
|
/**
|
|
* @brief Get the desktop geometry from a GetProperty
|
|
* _NET_DESKTOP_GEOMETRY reply
|
|
*
|
|
* @param width The current desktop width
|
|
* @param height The current desktop height
|
|
* @param r GetProperty _NET_DESKTOP_GEOMETRY reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_desktop_geometry_from_reply(uint32_t *width,
|
|
uint32_t *height,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_DESKTOP_GEOMETRY cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_desktop_geometry_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_DESKTOP_GEOMETRY GetProperty request cookie
|
|
* @param width The current desktop width
|
|
* @param width The current desktop height
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_desktop_geometry_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *width, uint32_t *height,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_DESKTOP_VIEWPORT
|
|
*
|
|
* _NET_DESKTOP_VIEWPORT x, y, CARDINAL[][2]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param list_len The number of desktop viewports
|
|
* @param list The desktop viewports
|
|
* @return Cookie associated with the ChangeProperty _NET_DESKTOP_VIEWPORT request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_viewport(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_ewmh_coordinates_t *list);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_desktop_viewport
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_viewport_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_ewmh_coordinates_t *list);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_DESKTOP_VIEWPORT root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_DESKTOP_VIEWPORT cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_viewport_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_desktop_viewport_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_viewport(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Send ClientMessage requesting to change the _NET_DESKTOP_VIEWPORT
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param new_x The new x coordinate
|
|
* @param new_y The new y coordinate
|
|
* @return The SendEvent cookie
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_request_change_desktop_viewport(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t x, uint32_t y);
|
|
|
|
/**
|
|
* @brief Get the desktop geometry from a GetProperty
|
|
* _NET_DESKTOP_VIEWPORT reply
|
|
*
|
|
* @param vp The current desktop viewports
|
|
* @param r GetProperty _NET_DESKTOP_VIEWPORT reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_desktop_viewport_from_reply(xcb_ewmh_get_desktop_viewport_reply_t *vp,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_DESKTOP_VIEWPORT cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_desktop_viewport_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_DESKTOP_VIEWPORT GetProperty request cookie
|
|
* @param vp The current desktop viewports
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_desktop_viewport_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_desktop_viewport_reply_t *vp,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Wipe the desktop viewports list reply
|
|
*
|
|
* This function must be called to free the memory allocated for atoms
|
|
* when the reply is requested in xcb_ewmh_get_desktop_viewport_reply
|
|
* function.
|
|
*
|
|
* @param r The X reply to be freed
|
|
*/
|
|
void xcb_ewmh_get_desktop_viewport_reply_wipe(xcb_ewmh_get_desktop_viewport_reply_t *r);
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_CURRENT_DESKTOP
|
|
*
|
|
* _NET_CURRENT_DESKTOP desktop, CARDINAL/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param new_current_desktop The new current desktop
|
|
* @return Cookie associated with the ChangeProperty _NET_CURRENT_DESKTOP request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_current_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_current_desktop);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_current_desktop
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_current_desktop_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_current_desktop);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_CURRENT_DESKTOP root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_CURRENT_DESKTOP cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_current_desktop_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_current_desktop_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_current_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Send ClientMessage requesting to change the _NET_CURRENT_DESKTOP
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param new_desktop The new current desktop
|
|
* @param timestamp The request timestamp
|
|
* @return The SendEvent cookie
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_request_change_current_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t new_desktop,
|
|
xcb_timestamp_t timestamp);
|
|
|
|
/**
|
|
* @brief Get the desktop geometry from a GetProperty
|
|
* _NET_CURRENT_DESKTOP reply
|
|
*
|
|
* @param current_desktop The current desktop
|
|
* @param r GetProperty _NET_CURRENT_DESKTOP reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_current_desktop_from_reply(uint32_t *current_desktop,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(current_desktop, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_CURRENT_DESKTOP cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_current_desktop_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_CURRENT_DESKTOP GetProperty request cookie
|
|
* @param vp The current desktop
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_current_desktop_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *current_desktop,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, current_desktop, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_DESKTOP_NAMES
|
|
*
|
|
* _NET_DESKTOP_NAMES, UTF8_STRING[]
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param strings_len The number of desktop names
|
|
* @param strings The desktop names
|
|
* @return Cookie associated with the ChangeProperty _NET_DESKTOP_NAMES request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_names(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_desktop_names
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_names_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_DESKTOP_NAMES root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @return The _NET_DESKTOP_NAMES cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_names_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_desktop_names_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_names(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the desktop geometry from a GetProperty
|
|
* _NET_DESKTOP_NAMES reply
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param names The desktop names
|
|
* @param r GetProperty _NET_DESKTOP_NAMES reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_desktop_names_from_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_ewmh_get_utf8_strings_reply_t *names,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_from_reply(ewmh, names, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_DESKTOP_NAMES cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_desktop_names_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_DESKTOP_NAMES GetProperty request cookie
|
|
* @param names The desktop names
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_desktop_names_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_utf8_strings_reply_t *names,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, names, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_ACTIVE_WINDOW
|
|
*
|
|
* _NET_ACTIVE_WINDOW, WINDOW/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param new_active_window The window to make active
|
|
* @return Cookie associated with the ChangeProperty _NET_ACTIVE_WINDOW request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_active_window(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t new_active_window);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_active_window
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_active_window_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t new_active_window);
|
|
|
|
/**
|
|
* @brief Send ClientMessage requesting to change the _NET_ACTIVE_WINDOW
|
|
*
|
|
* The window ID of the currently active window or None if no window
|
|
* has the focus. This is a read-only property set by the Window
|
|
* Manager. If a Client wants to activate another window, it MUST send
|
|
* a _NET_ACTIVE_WINDOW client message to the root window. The
|
|
* timestamp is Client's last user activity timestamp at the time of
|
|
* the request, and the currently active window is the Client's active
|
|
* toplevel window, if any (the Window Manager may be e.g. more likely
|
|
* to obey the request if it will mean transferring focus from one
|
|
* active window to another).
|
|
*
|
|
* @see xcb_ewmh_client_source_type_t
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @param window_to_active The window ID to activate
|
|
* @param source_indication The source indication
|
|
* @param timestamp The client's last user activity timestamp
|
|
* @param current_active_window The currently active window or None
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_request_change_active_window(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t window_to_activate,
|
|
xcb_ewmh_client_source_type_t source_indication,
|
|
xcb_timestamp_t timestamp,
|
|
xcb_window_t current_active_window);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_ACTIVE_WINDOW root
|
|
* window property
|
|
*
|
|
* The window ID of the currently active window or None if no window
|
|
* has the focus. This is a read-only property set by the Window
|
|
* Manager. This property SHOULD be set and updated by the Window
|
|
* Manager.
|
|
*
|
|
* This form can be used only if the request will cause a reply to be
|
|
* generated. Any returned error will be placed in the event queue.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_ACTIVE_WINDOW cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_active_window_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_ACTIVE_WINDOW root
|
|
* window property
|
|
*
|
|
* @see xcb_ewmh_get_active_window_unchecked
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_ACTIVE_WINDOW cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_active_window(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the list of client windows from a GetProperty
|
|
* _NET_ACTIVE_WINDOW reply
|
|
*
|
|
* @param active_window The current active window
|
|
* @param r GetProperty _NET_ACTIVE_WINDOW_OF_DESKTOPS reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_active_window_from_reply(xcb_window_t *active_window,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_window_from_reply(active_window, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_ACTIVE_WINDOW cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_active_window_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH.
|
|
* @param cookie The _NET_ACTIVE_WINDOW GetProperty request cookie.
|
|
* @param active_window The reply to be filled.
|
|
* @param The xcb_generic_error_t supplied.
|
|
* @return Return 1 on success, 0 otherwise.
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_active_window_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_window_t *active_window,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_window_reply(ewmh, cookie, active_window, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_WORKAREA
|
|
*
|
|
* _NET_WORKAREA, x, y, width, height CARDINAL[][4]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param list_len The number of desktops workareas
|
|
* @param list The desktops workareas
|
|
* @return Cookie associated with the ChangeProperty _NET_WORKAREA request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_workarea(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_ewmh_geometry_t *list);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_workarea
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_workarea_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_ewmh_geometry_t *list);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_WORKAREA root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_WORKAREA cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_workarea_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_virtual_roots_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_workarea(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the desktop geometry from a GetProperty _NET_WORKAREA
|
|
* reply
|
|
*
|
|
* @param wa The current workarea
|
|
* @param r GetProperty _NET_WORKAREA reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_workarea_from_reply(xcb_ewmh_get_workarea_reply_t *wa,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_WORKAREA cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_workarea_unchecked() is used. Otherwise, it stores the
|
|
* error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_WORKAREA GetProperty request cookie
|
|
* @param wa The current workareas of desktops
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
uint8_t xcb_ewmh_get_workarea_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_workarea_reply_t *wa,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Wipe the workarea list reply
|
|
*
|
|
* This function must be called to free the memory allocated for atoms
|
|
* when the reply is requested in xcb_ewmh_get_workarea_reply
|
|
* function.
|
|
*
|
|
* @param r The X reply to be freed
|
|
*/
|
|
void xcb_ewmh_get_workarea_reply_wipe(xcb_ewmh_get_workarea_reply_t *r);
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_SUPPORTING_WM_CHECK
|
|
*
|
|
* _NET_SUPPORTING_WM_CHECK, WINDOW/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param parent_window The root window or child window created by the WM
|
|
* @param child_window The child window created by the WM
|
|
* @return Cookie associated with the ChangeProperty _NET_SUPPORTING_WM_CHECK request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_supporting_wm_check(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t parent_window,
|
|
xcb_window_t child_window);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_supporting_wm_check
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_supporting_wm_check_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t parent_window,
|
|
xcb_window_t child_window);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_SUPPORTING_WM_CHECK
|
|
* root window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_SUPPORTING_WM_CHECK cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_supporting_wm_check_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_supporting_wm_check_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_supporting_wm_check(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
/**
|
|
* @brief Get the list of client windows from a GetProperty
|
|
* _NET_SUPPORTING_WM_CHECK reply
|
|
*
|
|
* @param window The child window created by the WM
|
|
* @param r GetProperty _NET_SUPPORTING_WM_CHECK reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_supporting_wm_check_from_reply(xcb_window_t *window,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_window_from_reply(window, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_SUPPORTING_WM_CHECK
|
|
* cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_supporting_wm_check_unchecked() is used. Otherwise, it
|
|
* stores the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_SUPPORTING_WM_CHECK GetProperty request cookie
|
|
* @param window The reply to be filled
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_supporting_wm_check_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_window_t *window,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_window_reply(ewmh, cookie, window, e);
|
|
}
|
|
|
|
/**
|
|
* @brief Send a ChangeProperty request for _NET_VIRTUAL_ROOTS
|
|
*
|
|
* _NET_VIRTUAL_ROOTS, WINDOW[]/32
|
|
*
|
|
* @param ewmh The per-screen EWMH information
|
|
* @param screen_nbr The screen number
|
|
* @param list_len The number of virtual root windows
|
|
* @param list The virtual root windows
|
|
* @return Cookie associated with the ChangeProperty _NET_VIRTUAL_ROOTS request
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_virtual_roots(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_window_t *list);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_virtual_roots
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_virtual_roots_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t list_len,
|
|
xcb_window_t *list);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_VIRTUAL_ROOTS root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_VIRTUAL_ROOTS cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_virtual_roots_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_virtual_roots_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_virtual_roots(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @brief Get the desktop geometry from a GetProperty _NET_WORKAREA
|
|
* reply
|
|
*
|
|
* @param virtual_roots The current virtual root windows
|
|
* @param r GetProperty _NET_VIRTUAL_ROOTS reply
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_virtual_roots_from_reply(xcb_ewmh_get_windows_reply_t *virtual_roots,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_windows_from_reply(virtual_roots, r);
|
|
}
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_VIRTUAL_ROOTS cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_virtual_roots_unchecked() is used. Otherwise, it stores
|
|
* the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param cookie The _NET_VIRTUAL_ROOTS GetProperty request cookie
|
|
* @param virtual_roots The current virtual root windows
|
|
* @param The xcb_generic_error_t supplied
|
|
* @return Return 1 on success, 0 otherwise
|
|
*/
|
|
static inline uint8_t
|
|
xcb_ewmh_get_virtual_roots_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_windows_reply_t *virtual_roots,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_windows_reply(ewmh, cookie, virtual_roots, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_layout(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_ewmh_desktop_layout_orientation_t orientation,
|
|
uint32_t columns, uint32_t rows,
|
|
xcb_ewmh_desktop_layout_starting_corner_t starting_corner);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_desktop_layout_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_ewmh_desktop_layout_orientation_t orientation,
|
|
uint32_t columns, uint32_t rows,
|
|
xcb_ewmh_desktop_layout_starting_corner_t starting_corner);
|
|
|
|
/**
|
|
* @brief Send GetProperty request to get _NET_DESKTOP_LAYOUT root
|
|
* window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_DESKTOP_LAYOUT cookie of the GetProperty request
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_layout_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_desktop_layout_unchecked
|
|
*/
|
|
xcb_get_property_cookie_t xcb_ewmh_get_desktop_layout(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
uint8_t xcb_ewmh_get_desktop_layout_from_reply(xcb_ewmh_get_desktop_layout_reply_t *desktop_layouts,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_desktop_layout_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_desktop_layout_reply_t *desktop_layouts,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_showing_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t desktop);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_showing_desktop_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t desktop);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_showing_desktop_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_showing_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_showing_desktop_from_reply(uint32_t *desktop,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(desktop, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_showing_desktop_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *desktop,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, desktop, e);
|
|
}
|
|
|
|
static inline xcb_void_cookie_t
|
|
xcb_ewmh_request_change_showing_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
uint32_t enter)
|
|
{
|
|
return xcb_ewmh_send_client_message(ewmh->connection, XCB_NONE,
|
|
ewmh->screens[screen_nbr]->root,
|
|
ewmh->_NET_SHOWING_DESKTOP,
|
|
sizeof(enter), &enter);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_close_window(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t window_to_close,
|
|
xcb_timestamp_t timestamp,
|
|
xcb_ewmh_client_source_type_t source_indication);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_moveresize_window(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t moveresize_window,
|
|
xcb_gravity_t gravity,
|
|
xcb_ewmh_client_source_type_t source_indication,
|
|
xcb_ewmh_moveresize_window_opt_flags_t flags,
|
|
uint32_t x, uint32_t y,
|
|
uint32_t width, uint32_t height);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_wm_moveresize(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t moveresize_window,
|
|
uint32_t x_root, uint32_t y_root,
|
|
xcb_ewmh_moveresize_direction_t direction,
|
|
xcb_button_index_t button,
|
|
xcb_ewmh_client_source_type_t source_indication);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_restack_window(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t window_to_restack,
|
|
xcb_window_t sibling_window,
|
|
xcb_stack_mode_t detail);
|
|
|
|
static inline xcb_void_cookie_t
|
|
xcb_ewmh_request_frame_extents(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t client_window)
|
|
{
|
|
return xcb_ewmh_send_client_message(ewmh->connection, client_window,
|
|
ewmh->screens[screen_nbr]->root,
|
|
ewmh->_NET_REQUEST_FRAME_EXTENTS, 0, NULL);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_name_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_name_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_name_from_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_name_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_visible_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_visible_name_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_visible_name_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_visible_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_visible_name_from_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_visible_name_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_icon_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_icon_name_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_icon_name_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_icon_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_icon_name_from_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_icon_name_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_visible_icon_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_visible_icon_name_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t strings_len,
|
|
const char *strings);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_visible_icon_name_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_visible_icon_name(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_visible_icon_name_from_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_from_reply(ewmh, data, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_visible_icon_name_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_utf8_strings_reply_t *data,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_utf8_strings_reply(ewmh, cookie, data, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_desktop(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t desktop);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_desktop_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t desktop);
|
|
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_desktop_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_desktop(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_desktop_from_reply(uint32_t *desktop,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(desktop, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_desktop_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *desktop,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, desktop, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_change_wm_desktop(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t client_window,
|
|
uint32_t new_desktop,
|
|
xcb_ewmh_client_source_type_t source_indication);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_window_type(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_window_type_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_window_type_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_window_type(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_window_type_from_reply(xcb_ewmh_get_atoms_reply_t *wtypes,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_window_type_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_atoms_reply_t *name,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_state(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_state_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_state_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_state(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_state_from_reply(xcb_ewmh_get_atoms_reply_t *wtypes,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_state_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_atoms_reply_t *name,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_change_wm_state(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t client_window,
|
|
xcb_ewmh_wm_state_action_t action,
|
|
xcb_atom_t first_property,
|
|
xcb_atom_t second_property,
|
|
xcb_ewmh_client_source_type_t source_indication);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_allowed_actions(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_allowed_actions_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t list_len,
|
|
xcb_atom_t *list);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_allowed_actions_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_allowed_actions(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_allowed_actions_from_reply(xcb_ewmh_get_atoms_reply_t *wtypes,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_allowed_actions_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_atoms_reply_t *name,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_strut(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t left, uint32_t right,
|
|
uint32_t top, uint32_t bottom);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_strut_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t left, uint32_t right,
|
|
uint32_t top, uint32_t bottom);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_strut_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_strut(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_strut_from_reply(xcb_ewmh_get_extents_reply_t *struts,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_strut_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_extents_reply_t *struts,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_strut_partial(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
xcb_ewmh_wm_strut_partial_t wm_strut);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_strut_partial_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
xcb_ewmh_wm_strut_partial_t wm_strut);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_strut_partial_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_strut_partial(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_strut_partial_from_reply(xcb_ewmh_wm_strut_partial_t *struts,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_strut_partial_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_wm_strut_partial_t *struts,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_icon_geometry(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t left, uint32_t right,
|
|
uint32_t top, uint32_t bottom);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_icon_geometry_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t left, uint32_t right,
|
|
uint32_t top, uint32_t bottom);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_icon_geometry_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_icon_geometry(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_icon_geometry_from_reply(xcb_ewmh_geometry_t *icons,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_icon_geometry_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_geometry_t *icons,
|
|
xcb_generic_error_t **e);
|
|
|
|
/**
|
|
* @brief Send ChangeProperty request to set _NET_WM_ICON window
|
|
* property. The given data is considered to be already
|
|
* prepared, namely that it is an array such as: WIDTH1,
|
|
* HEIGHT1, IMG1, WIDTH2, HEIGHT2, IMG2.
|
|
*
|
|
* If you only want to add or append a single icon, you may
|
|
* consider using xcb_ewmh_append_wm_icon_checked which is far
|
|
* easier to use.
|
|
*
|
|
* _NET_WM_ICON CARDINAL[][2+n]/32
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param mode ChangeProperty mode (xcb_prop_mode_t)
|
|
* @param window The window to set the property on
|
|
* @param data_len Length of the data
|
|
* @param data The data
|
|
*/
|
|
static inline xcb_void_cookie_t
|
|
xcb_ewmh_set_wm_icon_checked(xcb_ewmh_connection_t *ewmh,
|
|
uint8_t mode,
|
|
xcb_window_t window,
|
|
uint32_t data_len, uint32_t *data)
|
|
{
|
|
return xcb_change_property_checked(ewmh->connection, mode,
|
|
window, ewmh->_NET_WM_ICON,
|
|
XCB_ATOM_CARDINAL, 32, data_len, data);
|
|
}
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_wm_icon_checked
|
|
*/
|
|
static inline xcb_void_cookie_t
|
|
xcb_ewmh_set_wm_icon(xcb_ewmh_connection_t *ewmh,
|
|
uint8_t mode,
|
|
xcb_window_t window,
|
|
uint32_t data_len, uint32_t *data)
|
|
{
|
|
return xcb_change_property(ewmh->connection, mode, window,
|
|
ewmh->_NET_WM_ICON, XCB_ATOM_CARDINAL, 32,
|
|
data_len, data);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_append_wm_icon_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t width, uint32_t height,
|
|
uint32_t img_len, uint32_t *img);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_append_wm_icon(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t width, uint32_t height,
|
|
uint32_t img_len, uint32_t *img);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_icon_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_icon(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_icon_from_reply(xcb_ewmh_get_wm_icon_reply_t *wm_icon,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_icon_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_wm_icon_reply_t *wm_icon,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_ewmh_wm_icon_iterator_t xcb_ewmh_get_wm_icon_iterator(const xcb_ewmh_get_wm_icon_reply_t *wm_icon);
|
|
|
|
unsigned int xcb_ewmh_get_wm_icon_length(const xcb_ewmh_get_wm_icon_reply_t *wm_icon);
|
|
|
|
void xcb_ewmh_get_wm_icon_next(xcb_ewmh_wm_icon_iterator_t *iterator);
|
|
|
|
void xcb_ewmh_get_wm_icon_reply_wipe(xcb_ewmh_get_wm_icon_reply_t *wm_icon);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_pid(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t pid);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_pid_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t pid);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_pid_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_pid(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_pid_from_reply(uint32_t *pid,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(pid, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_pid_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *pid,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, pid, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_handled_icons(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t handled_icons);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_handled_icons_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t handled_icons);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_handled_icons_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_handled_icons(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_handled_icons_from_reply(uint32_t *handled_icons,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(handled_icons, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_handled_icons_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *handled_icons,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, handled_icons, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_user_time(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t xtime);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_user_time_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t pid);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_user_time_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_user_time(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_user_time_from_reply(uint32_t *xtime,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(xtime, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_user_time_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *xtime,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, xtime, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_user_time_window(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t xtime);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_user_time_window_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t pid);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_user_time_window_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_user_time_window(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_user_time_window_from_reply(uint32_t *xtime,
|
|
xcb_get_property_reply_t *r)
|
|
{
|
|
return xcb_ewmh_get_cardinal_from_reply(xtime, r);
|
|
}
|
|
|
|
static inline uint8_t
|
|
xcb_ewmh_get_wm_user_time_window_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint32_t *xtime,
|
|
xcb_generic_error_t **e)
|
|
{
|
|
return xcb_ewmh_get_cardinal_reply(ewmh, cookie, xtime, e);
|
|
}
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_frame_extents(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t left, uint32_t right,
|
|
uint32_t top, uint32_t bottom);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_frame_extents_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t left, uint32_t right,
|
|
uint32_t top, uint32_t bottom);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_frame_extents_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_frame_extents(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_frame_extents_from_reply(xcb_ewmh_get_extents_reply_t *frame_extents,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_frame_extents_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_extents_reply_t *frame_extents,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_send_wm_ping(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
xcb_timestamp_t timestamp);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_sync_request_counter(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
xcb_atom_t wm_sync_request_counter_atom,
|
|
uint32_t low, uint32_t high);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_sync_request_counter_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
xcb_atom_t wm_sync_request_counter_atom,
|
|
uint32_t low, uint32_t high);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_sync_request_counter_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_sync_request_counter(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_sync_request_counter_from_reply(uint64_t *counter,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_sync_request_counter_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
uint64_t *counter,
|
|
xcb_generic_error_t **e);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_send_wm_sync_request(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
xcb_atom_t wm_protocols_atom,
|
|
xcb_atom_t wm_sync_request_atom,
|
|
xcb_timestamp_t timestamp,
|
|
uint64_t counter);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_fullscreen_monitors(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t top, uint32_t bottom,
|
|
uint32_t left, uint32_t right);
|
|
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_fullscreen_monitors_checked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window,
|
|
uint32_t top, uint32_t bottom,
|
|
uint32_t left, uint32_t right);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_fullscreen_monitors_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
xcb_get_property_cookie_t xcb_ewmh_get_wm_fullscreen_monitors(xcb_ewmh_connection_t *ewmh,
|
|
xcb_window_t window);
|
|
|
|
uint8_t xcb_ewmh_get_wm_fullscreen_monitors_from_reply(xcb_ewmh_get_wm_fullscreen_monitors_reply_t *monitors,
|
|
xcb_get_property_reply_t *r);
|
|
|
|
uint8_t xcb_ewmh_get_wm_fullscreen_monitors_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_property_cookie_t cookie,
|
|
xcb_ewmh_get_wm_fullscreen_monitors_reply_t *monitors,
|
|
xcb_generic_error_t **e);
|
|
|
|
|
|
xcb_void_cookie_t xcb_ewmh_request_change_wm_fullscreen_monitors(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t window,
|
|
uint32_t top, uint32_t bottom,
|
|
uint32_t left, uint32_t right,
|
|
xcb_ewmh_client_source_type_t source_indication);
|
|
|
|
/**
|
|
* @brief Set _NET_WM_CM_Sn ownership to the given window
|
|
*
|
|
* For each screen they manage, compositing manager MUST acquire
|
|
* ownership of a selection named _NET_WM_CM_Sn, where n is the screen
|
|
* number.
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @param owner The new owner of _NET_WM_CM_Sn selection
|
|
* @param timestamp The client's last user activity timestamp
|
|
* @param selection_data1 Optional data described by ICCCM
|
|
* @param selection_data2 Optional data described by ICCCM
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_cm_owner(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t owner,
|
|
xcb_timestamp_t timestamp,
|
|
uint32_t selection_data1,
|
|
uint32_t selection_data2);
|
|
|
|
/**
|
|
* @see xcb_ewmh_set_wm_cm_owner
|
|
*/
|
|
xcb_void_cookie_t xcb_ewmh_set_wm_cm_owner_checked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr,
|
|
xcb_window_t owner,
|
|
xcb_timestamp_t timestamp,
|
|
uint32_t selection_data1,
|
|
uint32_t selection_data2);
|
|
|
|
/**
|
|
* @brief Send GetSelectOwner request to get the owner of
|
|
* _NET_WM_CM_Sn root window property
|
|
*
|
|
* @param ewmh The information relative to EWMH
|
|
* @param screen_nbr The screen number
|
|
* @return The _NET_WM_CM_Sn cookie of the GetSelectionOwner request
|
|
*/
|
|
xcb_get_selection_owner_cookie_t xcb_ewmh_get_wm_cm_owner_unchecked(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
/**
|
|
* @see xcb_ewmh_get_wm_cm_owner_unchecked
|
|
*/
|
|
xcb_get_selection_owner_cookie_t xcb_ewmh_get_wm_cm_owner(xcb_ewmh_connection_t *ewmh,
|
|
int screen_nbr);
|
|
|
|
uint8_t xcb_ewmh_get_wm_cm_owner_from_reply(xcb_window_t *owner,
|
|
xcb_get_selection_owner_reply_t *r);
|
|
|
|
/**
|
|
* @brief Get reply from the GetProperty _NET_CLIENT_LIST cookie
|
|
*
|
|
* The parameter e supplied to this function must be NULL if
|
|
* xcb_get_window_client_list_unchecked() is used. Otherwise, it
|
|
* stores the error if any.
|
|
*
|
|
* @param ewmh The information relative to EWMH.
|
|
* @param cookie The _NET_WM_CM_Sn GetSelectionOwner request cookie.
|
|
* @param owner The window ID which owns the selection or None.
|
|
* @param The xcb_generic_error_t supplied.
|
|
* @return Return 1 on success, 0 otherwise.
|
|
*/
|
|
uint8_t xcb_ewmh_get_wm_cm_owner_reply(xcb_ewmh_connection_t *ewmh,
|
|
xcb_get_selection_owner_cookie_t cookie,
|
|
xcb_window_t *owner,
|
|
xcb_generic_error_t **e);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* __XCB_EWMH_H__ */
|