i3
Data Structures | Defines | Typedefs | Functions
include/libi3.h File Reference
#include <stdbool.h>
#include <stdarg.h>
#include <stdio.h>
#include <xcb/xcb.h>
#include <xcb/xproto.h>
#include <xcb/xcb_keysyms.h>
Include dependency graph for libi3.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Font
 Data structure for cached font information: More...

Defines

#define ELOG(fmt,...)   fprintf(stderr, "ERROR: " fmt, ##__VA_ARGS__)

Typedefs

typedef struct Font i3Font

Functions

char * socket_path_from_x11 ()
 Try to get the socket path from X11 and return NULL if it doesn’t work.
void * smalloc (size_t size)
 Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory available)
void * scalloc (size_t size)
 Safe-wrapper around calloc which exits if malloc returns NULL (meaning that there is no more memory available)
void * srealloc (void *ptr, size_t size)
 Safe-wrapper around realloc which exits if realloc returns NULL (meaning that there is no more memory available).
char * sstrdup (const char *str)
 Safe-wrapper around strdup which exits if malloc returns NULL (meaning that there is no more memory available)
int sasprintf (char **strp, const char *fmt,...)
 Safe-wrapper around asprintf which exits if it returns -1 (meaning that there is no more memory available)
int ipc_connect (const char *socket_path)
 Connects to the i3 IPC socket and returns the file descriptor for the socket.
int ipc_send_message (int sockfd, uint32_t message_size, uint32_t message_type, const uint8_t *payload)
 Formats a message (payload) of the given size and type and sends it to i3 via the given socket file descriptor.
int ipc_recv_message (int sockfd, uint32_t message_type, uint32_t *reply_length, uint8_t **reply)
 Reads a message from the given socket file descriptor and stores its length (reply_length) as well as a pointer to its contents (reply).
void fake_configure_notify (xcb_connection_t *conn, xcb_rectangle_t r, xcb_window_t window, int border_width)
 Generates a configure_notify event and sends it to the given window Applications need this to think they’ve configured themselves correctly.
uint32_t get_colorpixel (const char *hex) __attribute__((const ))
 Returns the colorpixel to use for the given hex color (think of HTML).
uint32_t aio_get_mod_mask_for (uint32_t keysym, xcb_key_symbols_t *symbols)
 All-in-one function which returns the modifier mask (XCB_MOD_MASK_*) for the given keysymbol, for example for XCB_NUM_LOCK (usually configured to mod2).
uint32_t get_mod_mask_for (uint32_t keysym, xcb_key_symbols_t *symbols, xcb_get_modifier_mapping_reply_t *modmap_reply)
 Returns the modifier mask (XCB_MOD_MASK_*) for the given keysymbol, for example for XCB_NUM_LOCK (usually configured to mod2).
i3Font load_font (const char *pattern, bool fallback)
 Loads a font for usage, also getting its height.

Define Documentation

#define ELOG (   fmt,
  ... 
)    fprintf(stderr, "ERROR: " fmt, ##__VA_ARGS__)

Typedef Documentation

typedef struct Font i3Font

Definition at line 21 of file libi3.h.


Function Documentation

uint32_t aio_get_mod_mask_for ( uint32_t  keysym,
xcb_key_symbols_t *  symbols 
)

All-in-one function which returns the modifier mask (XCB_MOD_MASK_*) for the given keysymbol, for example for XCB_NUM_LOCK (usually configured to mod2).

This function initiates one round-trip. Use get_mod_mask_for() directly if you already have the modifier mapping and key symbols.

Referenced by handle_mapping_notify(), main(), and xkb_got_event().

void fake_configure_notify ( xcb_connection_t *  conn,
xcb_rectangle_t  r,
xcb_window_t  window,
int  border_width 
)

Generates a configure_notify event and sends it to the given window Applications need this to think they’ve configured themselves correctly.

The truth is, however, that we will manage them.

Referenced by fake_absolute_configure_notify().

uint32_t get_colorpixel ( const char *  hex) const

Returns the colorpixel to use for the given hex color (think of HTML).

Only works for true-color (vast majority of cases) at the moment, avoiding a roundtrip to X11.

The hex_color has to start with #, for example #FF00FF.

NOTE that get_colorpixel() does NOT check the given color code for validity. This has to be done by the caller.

NOTE that this function may in the future rely on a global xcb_connection_t variable called 'conn' to be present.

Referenced by load_configuration(), and sig_draw_window().

uint32_t get_mod_mask_for ( uint32_t  keysym,
xcb_key_symbols_t *  symbols,
xcb_get_modifier_mapping_reply_t *  modmap_reply 
)

Returns the modifier mask (XCB_MOD_MASK_*) for the given keysymbol, for example for XCB_NUM_LOCK (usually configured to mod2).

This function does not initiate any round-trips.

int ipc_connect ( const char *  socket_path)

Connects to the i3 IPC socket and returns the file descriptor for the socket.

die()s if anything goes wrong.

int ipc_recv_message ( int  sockfd,
uint32_t  message_type,
uint32_t *  reply_length,
uint8_t **  reply 
)

Reads a message from the given socket file descriptor and stores its length (reply_length) as well as a pointer to its contents (reply).

Returns -1 when read() fails, errno will remain. Returns -2 when the IPC protocol is violated (invalid magic, unexpected message type, EOF instead of a message). Additionally, the error will be printed to stderr. Returns 0 on success.

Referenced by main().

int ipc_send_message ( int  sockfd,
uint32_t  message_size,
uint32_t  message_type,
const uint8_t *  payload 
)

Formats a message (payload) of the given size and type and sends it to i3 via the given socket file descriptor.

Returns -1 when write() fails, errno will remain. Returns 0 on success.

Referenced by IPC_HANDLER(), ipc_send_event(), and main().

i3Font load_font ( const char *  pattern,
bool  fallback 
)

Loads a font for usage, also getting its height.

If fallback is true, the fonts 'fixed' or '-misc-*' will be loaded instead of exiting.

Referenced by create_window(), load_configuration(), and xcb_set_root_cursor().

int sasprintf ( char **  strp,
const char *  fmt,
  ... 
)
void* scalloc ( size_t  size)
void* smalloc ( size_t  size)

Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory available)

Referenced by append_argument(), con_get_fullscreen_con(), convert_utf8_to_ucs2(), ewmh_update_workarea(), json_start_map(), manage_existing_windows(), parse_file(), SLIST_HEAD(), and start_configerror_nagbar().

Try to get the socket path from X11 and return NULL if it doesn’t work.

The memory for the socket path is dynamically allocated and has to be free()d by the caller.

Referenced by main().

void* srealloc ( void *  ptr,
size_t  size 
)

Safe-wrapper around realloc which exits if realloc returns NULL (meaning that there is no more memory available).

Referenced by run_assignments(), translate_keysyms(), and x_push_changes().

char* sstrdup ( const char *  str)