i3
|
#include <stdbool.h>
#include <stdarg.h>
#include <stdio.h>
#include <xcb/xcb.h>
#include <xcb/xproto.h>
#include <xcb/xcb_keysyms.h>
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 * | root_atom_contents (const char *atomname) |
Try to get the contents of the given atom (for example I3_SOCKET_PATH) from the X11 root window 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, const bool fallback) |
Loads a font for usage, also getting its height. | |
void | set_font (i3Font *font) |
Defines the font to be used for the forthcoming calls. | |
void | free_font (void) |
Frees the resources taken by the current font. | |
char * | convert_ucs2_to_utf8 (xcb_char2b_t *text, size_t num_glyphs) |
Converts the given string to UTF-8 from UCS-2 big endian. | |
xcb_char2b_t * | convert_utf8_to_ucs2 (char *input, size_t *real_strlen) |
Converts the given string to UCS-2 big endian for use with xcb_image_text_16(). | |
void | set_font_colors (xcb_gcontext_t gc, uint32_t foreground, uint32_t background) |
Defines the colors to be used for the forthcoming draw_text calls. | |
void | draw_text (char *text, size_t text_len, bool is_ucs2, xcb_drawable_t drawable, xcb_gcontext_t gc, int x, int y, int max_width) |
Draws text onto the specified X drawable (normally a pixmap) at the specified coordinates (from the top left corner of the leftmost, uppermost glyph) and using the provided gc. | |
int | predict_text_width (char *text, size_t text_len, bool is_ucs2) |
Predict the text width in pixels for the given text. |
#define ELOG | ( | fmt, | |
... | |||
) | fprintf(stderr, "ERROR: " fmt, ##__VA_ARGS__) |
Definition at line 46 of file libi3.h.
Referenced by check_crossing_screen_boundary(), check_for_duplicate_bindings(), CIRCLEQ_HEAD(), cmd_border(), cmd_criteria_add(), cmd_focus(), cmd_focus_direction(), cmd_kill(), cmd_move_con_to_workspace(), cmd_move_window_to_center(), cmd_move_window_to_position(), cmd_workspace(), con_minimum_size(), drag_pointer(), fake_outputs_init(), floating_enable(), floating_maybe_reassign_ws(), floating_reposition(), handle_button_press(), handle_key_press(), init_logging(), IPC_HANDLER(), load_configuration(), main(), migrate_i3bar_exec(), mkdirp(), output_get_content(), parse_file(), query_screens(), randr_query_outputs(), regex_matches(), regex_new(), setup_signal_handler(), switch_mode(), translate_keysyms(), x_move_win(), x_push_changes(), x_reinit(), x_reparent_child(), x_set_name(), xcb_check_cb(), xkb_got_event(), yyerror(), and yyparse().
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().
char* convert_ucs2_to_utf8 | ( | xcb_char2b_t * | text, |
size_t | num_glyphs | ||
) |
Converts the given string to UTF-8 from UCS-2 big endian.
The return value must be freed after use.
xcb_char2b_t* convert_utf8_to_ucs2 | ( | char * | input, |
size_t * | real_strlen | ||
) |
Converts the given string to UCS-2 big endian for use with xcb_image_text_16().
The amount of real glyphs is stored in real_strlen, a buffer containing the UCS-2 encoded string (16 bit per glyph) is returned. It has to be freed when done.
Referenced by handle_signal(), and window_update_name().
void draw_text | ( | char * | text, |
size_t | text_len, | ||
bool | is_ucs2, | ||
xcb_drawable_t | drawable, | ||
xcb_gcontext_t | gc, | ||
int | x, | ||
int | y, | ||
int | max_width | ||
) |
Draws text onto the specified X drawable (normally a pixmap) at the specified coordinates (from the top left corner of the leftmost, uppermost glyph) and using the provided gc.
Text can be specified as UCS-2 or UTF-8. If it's specified as UCS-2, then text_len must be the number of glyphs in the string. If it's specified as UTF-8, then text_len must be the number of bytes in the string (not counting the null terminator).
Referenced by sig_draw_window().
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().
void free_font | ( | void | ) |
Frees the resources taken by the current font.
Referenced by load_configuration().
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(), sig_draw_window(), and yyparse().
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().
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(), xcb_set_root_cursor(), and yyparse().
int predict_text_width | ( | char * | text, |
size_t | text_len, | ||
bool | is_ucs2 | ||
) |
Predict the text width in pixels for the given text.
Text can be specified as UCS-2 or UTF-8.
Referenced by handle_signal(), and load_configuration().
char* root_atom_contents | ( | const char * | atomname | ) |
Try to get the contents of the given atom (for example I3_SOCKET_PATH) from the X11 root window and return NULL if it doesn’t work.
The memory for the contents is dynamically allocated and has to be free()d by the caller.
Referenced by main().
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)
Referenced by cmd_focus(), cmd_move_window_to_center(), cmd_move_window_to_position(), cmd_open(), create_workspace_on_output(), exec_i3_utility(), fake_outputs_init(), floating_enable(), get_config_path(), get_process_filename(), handle_output(), init_logging(), json_string(), main(), manage_window(), next_state(), output_init_con(), parse_command(), query_screens(), run_assignments(), start_configerror_nagbar(), workspace_get(), and yyparse().
void* scalloc | ( | size_t | size | ) |
Safe-wrapper around calloc which exits if malloc returns NULL (meaning that there is no more memory available)
Referenced by add_subscription(), con_new(), disable_randr(), fake_outputs_init(), handle_client_message(), handle_output(), i3_restart(), IPC_HANDLER(), ipc_new_client(), json_int(), json_key(), json_string(), load_configuration(), main(), manage_window(), migrate_i3bar_exec(), output_init_con(), parse_command(), parse_file(), query_screens(), regex_new(), resolve_tilde(), send_take_focus(), start_application(), x_con_init(), x_draw_decoration(), x_window_kill(), and yyparse().
Defines the font to be used for the forthcoming calls.
Referenced by load_configuration(), and yyparse().
void set_font_colors | ( | xcb_gcontext_t | gc, |
uint32_t | foreground, | ||
uint32_t | background | ||
) |
Defines the colors to be used for the forthcoming draw_text calls.
Referenced by sig_draw_window().
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(), cmd_criteria_init(), con_get_fullscreen_con(), ewmh_update_workarea(), manage_existing_windows(), parse_command(), parse_file(), SLIST_HEAD(), start_configerror_nagbar(), TAILQ_HEAD(), and yyparse().
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(), x_push_changes(), and yyparse().
char* sstrdup | ( | const char * | str | ) |
Safe-wrapper around strdup which exits if malloc returns NULL (meaning that there is no more memory available)
Referenced by _create___i3(), _workspace_show(), cmd_append_layout(), cmd_border(), cmd_exec(), cmd_floating(), cmd_focus(), cmd_focus_direction(), cmd_focus_level(), cmd_focus_output(), cmd_focus_window_mode(), cmd_fullscreen(), cmd_kill(), cmd_layout(), cmd_mark(), cmd_mode(), cmd_move_con_to_output(), cmd_move_con_to_workspace(), cmd_move_con_to_workspace_name(), cmd_move_con_to_workspace_number(), cmd_move_direction(), cmd_move_scratchpad(), cmd_move_window_to_center(), cmd_move_window_to_position(), cmd_move_workspace_to_output(), cmd_reload(), cmd_rename_workspace(), cmd_resize(), cmd_resize_tiling_direction(), cmd_resize_tiling_width_height(), cmd_restart(), cmd_scratchpad_show(), cmd_split(), cmd_workspace(), cmd_workspace_back_and_forth(), cmd_workspace_name(), cmd_workspace_number(), get_config_path(), ipc_create_socket(), load_configuration(), main(), migrate_i3bar_exec(), output_init_con(), parse_command(), parse_file(), regex_new(), resolve_tilde(), start_application(), window_update_class(), window_update_name_legacy(), workspace_get(), x_set_name(), and yyparse().